public static void main(String[] args) {
   if (args.length < 1) {
     print(usage);
     System.exit(0);
   }
   int lines = 0;
   try {
     Class<?> c = Class.forName(args[0]);
     Method[] methods = c.getMethods();
     Constructor[] ctors = c.getConstructors();
     if (args.length == 1) {
       for (Method method : methods) print(p.matcher(method.toString()).replaceAll(""));
       for (Constructor ctor : ctors) print(p.matcher(ctor.toString()).replaceAll(""));
       lines = methods.length + ctors.length;
     } else {
       for (Method method : methods)
         if (method.toString().indexOf(args[1]) != -1) {
           print(p.matcher(method.toString()).replaceAll(""));
           lines++;
         }
       for (Constructor ctor : ctors)
         if (ctor.toString().indexOf(args[1]) != -1) {
           print(p.matcher(ctor.toString()).replaceAll(""));
           lines++;
         }
     }
   } catch (ClassNotFoundException e) {
     print("No such class: " + e);
   }
 }
 public static void perform(Object speaker) {
   Class<?> spkr = speaker.getClass();
   try {
     try {
       Method speak = spkr.getMethod("speak");
       speak.invoke(speaker);
     } catch (NoSuchMethodException e) {
       print(speaker + " cannot speak");
     }
     try {
       Method sit = spkr.getMethod("sit");
       sit.invoke(speaker);
     } catch (NoSuchMethodException e) {
       print(speaker + " cannot sit");
     }
   } catch (Exception e) {
     throw new RuntimeException(speaker.toString(), e);
   }
 }