class SolidityFunctionWrapper extends Generator {

    static TypeName buildTypeName(String typeDeclaration) {
        String type = trimStorageDeclaration(typeDeclaration);

        if (type.endsWith("]")) {
            String[] splitType = type.split("[\\[\\]]");
            Class<?> baseType = AbiTypes.getType(splitType[0]);

            TypeName typeName;
            if (splitType.length == 1) {
                typeName = ParameterizedTypeName.get(DynamicArray.class, baseType);
            } else {
                Class<?> rawType = getStaticArrayTypeReferenceClass(splitType);
                typeName = ParameterizedTypeName.get(rawType, baseType);
            }
            return typeName;
        } else {
            Class<?> cls = AbiTypes.getType(type);
            return ClassName.get(cls);
        }
    }

    public  SolidityFunctionWrapper(boolean useNativeJavaTypes);

}