private static ClassNode createUsableClassNodeFromGenericsType(final GenericsType genericsType){
  ClassNode value=genericsType.getType();
  if (genericsType.isPlaceholder()) {
    value=OBJECT_TYPE;
  }
  ClassNode lowerBound=genericsType.getLowerBound();
  if (lowerBound != null) {
    value=lowerBound;
  }
 else {
    ClassNode[] upperBounds=genericsType.getUpperBounds();
    if (upperBounds != null) {
      value=WideningCategories.lowestUpperBound(Arrays.asList(upperBounds));
    }
  }
  return value;
}

private static ClassNode createUsableClassNodeFromGenericsType ( final GenericsType genericsType ) { ClassNode value = genericsType . getType ( ) ; if ( genericsType . isPlaceholder ( ) ) { value = OBJECT_TYPE ; } ClassNode lowerBound = genericsType . getLowerBound ( ) ; if ( lowerBound != null ) { value = lowerBound ; } else { ClassNode [ ] upperBounds = genericsType . getUpperBounds ( ) ; if ( upperBounds != null ) { value = WideningCategories . lowestUpperBound ( Arrays . asList ( upperBounds ) ) ; } } return value ; }
given a genericstype instance , returns a classnode which can be used as an inferred type .
