public TypeName(String fullName,String nickname,String pattern,TypeName... innerTypeNames){
  this.topLevelAlias=TypeAlias.create(fullName,nickname);
  this.pattern=pattern;
  this.innerTypeNames=Arrays.asList(innerTypeNames);
}

public TypeName ( String fullName , String nickname , String pattern , TypeName ... innerTypeNames ) { this . topLevelAlias = TypeAlias . create ( fullName , nickname ) ; this . pattern = pattern ; this . innerTypeNames = Arrays . asList ( innerTypeNames ) ; }
constructs a composite typename with a special string pattern to render the type , and a list of inner typename instances that parameterize the type .
