// Path: se/sics/mspsim/util/ArgumentManager.java
// public class ArgumentManager extends ConfigManager {
// 
//   private String configName = "config";
//   private String[] arguments;
//   private boolean isConfigLoaded;
// 
//   public ArgumentManager() {
//   }
// 
//   public ArgumentManager(ConfigManager parent) {
//     super(parent);
//   }
// 
//   public boolean isConfigLoaded() {
//     return isConfigLoaded;
//   }
// 
//   public String getConfigArgumentName() {
//     return configName;
//   }
// 
//   public void setConfigArgumentName(String configName) {
//     this.configName = configName;
//   }
// 
//   public String[] getArguments() {
//     return arguments;
//   }
// 
//   public void handleArguments(String[] args) {
//     ArrayList<String> list = new ArrayList<String>();
//     ArrayList<String> config = new ArrayList<String>();
//     for (int i = 0, n = args.length; i < n; i++) {
//       if ("-".equals(args[i])) {
//           // The rest should be considered arguments
//           for(++i; i < args.length; i++) {
//               list.add(args[i]);
//           }
//           break;
//       }
//       if (args[i].startsWith("-")) {
//         String param = args[i].substring(1);
//         String value = "";
//         int index = param.indexOf('=');
//         if (index >= 0) {
//           if (index < param.length()) {
//             value = param.substring(index + 1);
//           }
//           param = param.substring(0, index);
//         }
//         if (param.length() == 0) {
//           throw new IllegalArgumentException("illegal argument: " + args[i]);
//         }
//         if (configName != null && configName.equals(param)) {
//           if (value.length() == 0) {
//             throw new IllegalArgumentException("no config file name specified");
//           }
//           if (!loadConfiguration(value)) {
//             throw new IllegalArgumentException("failed to load configuration " + value);
//           }
//           isConfigLoaded = true;
//         }
//         config.add(param);
//         config.add(value.length() > 0 ? value : "true");
//       } else {
//         // Normal argument
//         list.add(args[i]);
//       }
//     }
//     this.arguments = list.toArray(new String[list.size()]);
//     for (int i = 0, n = config.size(); i < n; i += 2) {
//       setProperty(config.get(i), config.get(i + 1));
//     }
//   }
// 
// } // ArgumentManager


import se.sics.mspsim.platform.GenericNode;
import se.sics.mspsim.util.ArgumentManager;
import java.io.IOException;
    } catch (ClassCastException e) {
      // Wrong class type
    } catch (InstantiationException e) {
      // Failed to instantiate
    } catch (IllegalAccessException e) {
      // Failed to access constructor
    }
    return null;
  }

  public static String getNodeTypeByPlatform(String platform) {
      if ("jcreate".equals(platform)) {
          return "se.sics.mspsim.platform.jcreate.JCreateNode";
      }
      if ("sentilla-usb".equals(platform)) {
          return "se.sics.mspsim.platform.sentillausb.SentillaUSBNode";
      }
      if ("esb".equals(platform)) {
          return "se.sics.mspsim.platform.esb.ESBNode";
      }
      if ("exp5438".equals(platform)) {
          return "se.sics.mspsim.platform.ti.Exp5438Node";
      }
      // Try to guess the node type.
      return "se.sics.mspsim.platform." + platform + '.'
          + Character.toUpperCase(platform.charAt(0))
          + platform.substring(1).toLowerCase() + "Node";
  }

  public static void main(String[] args) throws IOException {
// Path: se/sics/mspsim/util/ArgumentManager.java
// public class ArgumentManager extends ConfigManager {
// 
//   private String configName = "config";
//   private String[] arguments;
//   private boolean isConfigLoaded;
// 
//   public ArgumentManager() {
//   }
// 
//   public ArgumentManager(ConfigManager parent) {
//     super(parent);
//   }
// 
//   public boolean isConfigLoaded() {
//     return isConfigLoaded;
//   }
// 
//   public String getConfigArgumentName() {
//     return configName;
//   }
// 
//   public void setConfigArgumentName(String configName) {
//     this.configName = configName;
//   }
// 
//   public String[] getArguments() {
//     return arguments;
//   }
// 
//   public void handleArguments(String[] args) {
//     ArrayList<String> list = new ArrayList<String>();
//     ArrayList<String> config = new ArrayList<String>();
//     for (int i = 0, n = args.length; i < n; i++) {
//       if ("-".equals(args[i])) {
//           // The rest should be considered arguments
//           for(++i; i < args.length; i++) {
//               list.add(args[i]);
//           }
//           break;
//       }
//       if (args[i].startsWith("-")) {
//         String param = args[i].substring(1);
//         String value = "";
//         int index = param.indexOf('=');
//         if (index >= 0) {
//           if (index < param.length()) {
//             value = param.substring(index + 1);
//           }
//           param = param.substring(0, index);
//         }
//         if (param.length() == 0) {
//           throw new IllegalArgumentException("illegal argument: " + args[i]);
//         }
//         if (configName != null && configName.equals(param)) {
//           if (value.length() == 0) {
//             throw new IllegalArgumentException("no config file name specified");
//           }
//           if (!loadConfiguration(value)) {
//             throw new IllegalArgumentException("failed to load configuration " + value);
//           }
//           isConfigLoaded = true;
//         }
//         config.add(param);
//         config.add(value.length() > 0 ? value : "true");
//       } else {
//         // Normal argument
//         list.add(args[i]);
//       }
//     }
//     this.arguments = list.toArray(new String[list.size()]);
//     for (int i = 0, n = config.size(); i < n; i += 2) {
//       setProperty(config.get(i), config.get(i + 1));
//     }
//   }
// 
// } // ArgumentManager


// Path: se/sics/mspsim/Main.java
import se.sics.mspsim.platform.GenericNode;
import se.sics.mspsim.util.ArgumentManager;
import java.io.IOException;

    } catch (ClassCastException e) {
      // Wrong class type
    } catch (InstantiationException e) {
      // Failed to instantiate
    } catch (IllegalAccessException e) {
      // Failed to access constructor
    }
    return null;
  }

  public static String getNodeTypeByPlatform(String platform) {
      if ("jcreate".equals(platform)) {
          return "se.sics.mspsim.platform.jcreate.JCreateNode";
      }
      if ("sentilla-usb".equals(platform)) {
          return "se.sics.mspsim.platform.sentillausb.SentillaUSBNode";
      }
      if ("esb".equals(platform)) {
          return "se.sics.mspsim.platform.esb.ESBNode";
      }
      if ("exp5438".equals(platform)) {
          return "se.sics.mspsim.platform.ti.Exp5438Node";
      }
      // Try to guess the node type.
      return "se.sics.mspsim.platform." + platform + '.'
          + Character.toUpperCase(platform.charAt(0))
          + platform.substring(1).toLowerCase() + "Node";
  }

  public static void main(String[] args) throws IOException {
    ArgumentManager config = new ArgumentManager();