public Type resolveAliases(){
  if (resolvedAliases == null) {
    checkDepth();
    if (!isTuple()) {
      incDepth();
    }
    try {
      resolvedAliases=resolveAliasesInternal();
    }
  finally {
      if (!isTuple()) {
        decDepth();
      }
    }
    resolvedAliases.resolvedAliases=resolvedAliases;
    if (resolvedAliases != this) {
      if (!Objects.equals(resolvedAliases.underlyingType,underlyingType) || resolvedAliases.isRaw != isRaw) {
        resolvedAliases=resolvedAliases.clone();
        resolvedAliases.resolvedAliases=resolvedAliases;
        resolvedAliases.underlyingType=underlyingType;
        resolvedAliases.isRaw=isRaw;
      }
    }
  }
  return resolvedAliases;
}

public Type resolveAliases ( ) { if ( resolvedAliases == null ) { checkDepth ( ) ; if ( ! isTuple ( ) ) { incDepth ( ) ; } try { resolvedAliases = resolveAliasesInternal ( ) ; } finally { if ( ! isTuple ( ) ) { decDepth ( ) ; } } resolvedAliases . resolvedAliases = resolvedAliases ; if ( resolvedAliases != this ) { if ( ! Objects . equals ( resolvedAliases . underlyingType , underlyingType ) || resolvedAliases . isRaw != isRaw ) { resolvedAliases = resolvedAliases . clone ( ) ; resolvedAliases . resolvedAliases = resolvedAliases ; resolvedAliases . underlyingType = underlyingType ; resolvedAliases . isRaw = isRaw ; } } } return resolvedAliases ; }
eliminate type aliases from this type , recursively expanding them into their aliased types . canonicalize the type by side - effect !
