+
+ // TODO: Fix for Groovy's model-checking
+ public static String[] getParameterizedTypes(String signature) {
+ int pos = signature.indexOf('<', 0);
+ if (pos == -1)
+ return new String[0];
+ ArrayList<String> typeVarNames = new ArrayList<>();
+
+ while (pos < signature.length()) {
+ String typeVarName = "";
+ int comma = signature.indexOf(',', pos);
+ if (comma == -1) {
+ int closing = signature.indexOf('>', pos);
+ typeVarName = signature.substring(pos + 1, closing);
+ pos = signature.length();
+ } else {
+ typeVarName = signature.substring(pos + 1, comma);
+ pos = comma + 1;
+ }
+ typeVarNames.add(typeVarName);
+ }
+
+ String[] arrTypeVarNames = new String[typeVarNames.size()];
+ typeVarNames.toArray(arrTypeVarNames);
+
+ return arrTypeVarNames;
+ }
+
+ public static String getGenericClassName(String signature) {
+ int opening = signature.indexOf('<');
+ if (opening == -1)
+ return signature;
+ else
+ return signature.substring(0, opening);
+ }
+
+ public static String getOwnerClassName(String signature) {
+ int marker = signature.indexOf('$');
+ if (marker == -1)
+ return null;
+ else
+ return signature.substring(0, marker);
+ }
+
+ public static boolean isGenericSignature(String signature) {
+ if (signature == null || signature.equals(""))
+ return false;
+ int opening = signature.indexOf('<');
+ return (opening != -1);
+ }
+
+ public static boolean isTypeParameter(String parameterizedType, String signature) {
+ if (signature == null || signature.equals(""))
+ return false;
+ String typeParamSig = parameterizedType.concat(":");
+ return signature.contains(typeParamSig);
+ }
+ // TODO: Fix for Groovy's model-checking