  Line 18) provider.apply(null) ==> java.util.function.Function.apply(T)
  Line 25) getType().isArray() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isArray()
  Line 25) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 30) getType().arrayLevel() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.arrayLevel()
  Line 30) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 35) getType().isPrimitive() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isPrimitive()
  Line 35) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 40) getType().isNull() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isNull()
  Line 40) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 45) getType().isReference() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isReference()
  Line 45) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 50) getType().isReferenceType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isReferenceType()
  Line 50) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 55) getType().isVoid() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isVoid()
  Line 55) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 60) getType().isTypeVariable() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isTypeVariable()
  Line 60) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 65) getType().isArray() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isArray()
  Line 65) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 70) getType().asArrayType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asArrayType()
  Line 70) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 75) getType().asReferenceType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asReferenceType()
  Line 75) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 80) getType().asTypeParameter() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asTypeParameter()
  Line 80) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 85) getType().asTypeVariable() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asTypeVariable()
  Line 85) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 90) getType().asPrimitive() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asPrimitive()
  Line 90) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 95) getType().asWildcard() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asWildcard()
  Line 95) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 100) getType().describe() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.describe()
  Line 100) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 105) getType().replaceTypeVariables(tp, replaced, inferredTypes) ==> com.github.javaparser.symbolsolver.model.typesystem.Type.replaceTypeVariables(com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration, com.github.javaparser.symbolsolver.model.typesystem.Type, java.util.Map<com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration, com.github.javaparser.symbolsolver.model.typesystem.Type>)
  Line 105) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 110) getType().replaceTypeVariables(tp, replaced) ==> com.github.javaparser.symbolsolver.model.typesystem.Type.replaceTypeVariables(com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration, com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 110) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
  Line 115) getType().isAssignableBy(other) ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 115) getType() ==> com.github.javaparser.symbolsolver.model.typesystem.LazyType.getType()
