private boolean useQualifiedReference(DAType type) {
    if (type.getKind() != DATypeKind.DECLARED) {
      return false;
    }
    if (DATypePredicates.isJavaLangType().apply(type)) {
      return false;
    }
    if (fileContext.hasExpliciteImport(type)) {
      return false;
    }
    if (fileContext.hasHomonymousImport(type)) {
      return true;
    }
    if (type.getPackageName() == null && fileContext.getPackageName().isEmpty()) {
      return false;
    }
    if (type.getPackageName() != null && type.getPackageName().equals(fileContext.getPackageName())) {
      return false;
    }
    // unless import are incomplete (and generated class will not compile), this should not happen
    throw new IllegalArgumentException(
        fromNullable(type.getQualifiedName()).or(type.getSimpleName()) + " is neither imported nor in the " +
            "current package. Can not print reference without creating compilation error");
  }
private boolean useQualifiedReference ( DAType type ) { if ( type . getKind ( ) != DATypeKind . DECLARED ) { return false ; } if ( DATypePredicates . isJavaLangType ( ) . apply ( type ) ) { return false ; } if ( fileContext . hasExpliciteImport ( type ) ) { return false ; } if ( fileContext . hasHomonymousImport ( type ) ) { return true ; } if ( type . getPackageName ( ) == null && fileContext . getPackageName ( ) . isEmpty ( ) ) { return false ; } if ( type . getPackageName ( ) != null && type . getPackageName ( ) . equals ( fileContext . getPackageName ( ) ) ) { return false ; } throw new IllegalArgumentException ( fromNullable ( type . getQualifiedName ( ) ) . or ( type . getSimpleName ( ) ) + " is neither imported nor in the " + "current package. Can not print reference without creating compilation error" ) ; }
Compute whether a qualified reference should be used for the specified {@link fr.javatronic.damapping.processor.model.impl.DATypeImpl}.
<p>
Compute uses the following test, in order:
<ul>
<li>if the specified type does not represent a declared type or a array of declared types, use simple reference</li>
<li>if the specified type is a type or an array of type from "java.lang", use simple reference</li>
<li>if the specified type has an explicite import, use simple reference</li>
<li>if the specified type has an homonymous amough the explicite imports, use qualified reference</li>
<li>if the specified type belongs to the current package, use implicit reference</li>
<li>if the specified type did not match any of the above rules, raise an error, there is something wrong</li>
</ul>
</p>

@param type a {@link fr.javatronic.damapping.processor.model.impl.DATypeImpl}
@return a flag indicating to use a qualified reference or not²