# javax.lang.model.util

***

**1. AnnotatedConstructVisitor**

```java
public class AnnotatedConstructVisitor extends AbstractElementVisitor14<Void, Void> {
    public Void visit(AnnotationMirror e, Void p) {
        System.out.println("Annotation: " + e);
        return null;
    }
    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }
}
```

**2. ClassScanner**

```java
public class ClassScanner extends AbstractScanner<Void, Void> {
    public Void scan(Element e, Void p) {
        if (e instanceof TypeElement) {
            System.out.println("Class: " + e);
        }
        return super.scan(e, p);
    }
}
```

**3. ErrorReporterScanner**

```java
public class ErrorReporterScanner extends AbstractScanner<Void, Void> {
    private final ErrorReporter errorReporter;

    public ErrorReporterScanner(ErrorReporter errorReporter) {
        this.errorReporter = errorReporter;
    }

    public Void scan(Element e, Void p) {
        try {
            return super.scan(e, p);
        } catch (Exception ex) {
            errorReporter.error(null, e, "Error scanning element: " + e.toString());
            return null;
        }
    }
}
```

**4. ElementFilter**

```java
public class ElementFilter extends AbstractElementVisitor6<Boolean, Void> {
    private final Predicate<Element> predicate;

    public ElementFilter(Predicate<Element> predicate) {
        this.predicate = predicate;
    }

    public Boolean visit(Element e, Void p) {
        return predicate.test(e);
    }
}
```

**5. ElementScanner**

```java
public class ElementScanner extends AbstractScanner<Void, Void> {
    public Void scan(Element e, Void p) {
        System.out.println("Element: " + e);
        return super.scan(e, p);
    }
}
```

**6. ElementScanner6**

```java
public class ElementScanner6 extends AbstractElementVisitor6<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }
}
```

**7. ElementScanner8**

```java
public class ElementScanner8 extends AbstractElementVisitor8<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }

    public Void visit(PackageElement e, Void p) {
        System.out.println("Package: " + e);
        return super.visit(e, p);
    }
}
```

**8. TypeElementScanner6**

```java
public class TypeElementScanner6 extends AbstractTypeElementVisitor6<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }
}
```

**9. TypeElementScanner8**

```java
public class TypeElementScanner8 extends AbstractTypeElementVisitor8<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }

    public Void visit(PackageElement e, Void p) {
        System.out.println("Package: " + e);
        return super.visit(e, p);
    }
}
```

**10. ExecutableElementScanner6**

```java
public class ExecutableElementScanner6 extends AbstractExecutableElementVisitor6<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }
}
```

**11. ExecutableElementScanner8**

```java
public class ExecutableElementScanner8 extends AbstractExecutableElementVisitor8<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }

    public Void visit(PackageElement e, Void p) {
        System.out.println("Package: " + e);
        return super.visit(e, p);
    }
}
```

**12. VariableElementScanner6**

```java
public class VariableElementScanner6 extends AbstractVariableElementVisitor6<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }
}
```

**13. VariableElementScanner8**

```java
public class VariableElementScanner8 extends AbstractVariableElementVisitor8<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }

    public Void visit(PackageElement e, Void p) {
        System.out.println("Package: " + e);
        return super.visit(e, p);
    }
}
```

**14. PackageElementScanner6**

```java
public class PackageElementScanner6 extends AbstractPackageElementVisitor6<Void, Void> {
    public Void visit(TypeElement e, Void p) {
        System.out.println("Class: " + e);
        return super.visit(e, p);
    }

    public Void visit(ExecutableElement e, Void p) {
        System.out.println("Method: " + e);
        return super.visit(e, p);
    }

    public Void visit(VariableElement e, Void p) {
        System.out.println("Field: " + e);
        return super.visit(e, p);
    }

    public Void visit(Package

```
