@@ -0,0 +1,1530 @@
+package com.github.jochenw.afw.core.cli;%0D%0A%0D%0Apublic abstract class Option%3CO%3E %7B%0D%0A%09private final Class%3CO%3E type;%0D%0A%09private boolean required, given;%0D%0A%09private O value;%0D%0A%09private String strValue;%0D%0A%09private String%5B%5D names;%0D%0A%09private String defaultValue;%0D%0A%09private String%5B%5D description;%0D%0A%0D%0A%09protected Option(Class%3CO%3E pType) %7B%0D%0A%09%09type = pType;%0D%0A%09%7D%0D%0A%09%0D%0A%09public Class%3CO%3E getType() %7B%0D%0A%09%09return type;%0D%0A%09%7D%0D%0A%0D%0A%09public String getDefaultValue() %7B%0D%0A%09%09return defaultValue;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setDefaultValue(String pDefaultValue) %7B%0D%0A%09%09defaultValue = pDefaultValue;%0D%0A%09%7D%0D%0A%0D%0A%09public boolean isRequired() %7B%0D%0A%09%09return required;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setRequired(boolean pRequired) %7B%0D%0A%09%09required = pRequired;%0D%0A%09%7D%0D%0A%0D%0A%09public boolean isGiven() %7B%0D%0A%09%09return given;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setGiven(boolean pGiven) %7B%0D%0A%09%09given = pGiven;%0D%0A%09%7D%0D%0A%0D%0A%09public O getValue() %7B%0D%0A%09%09return value;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setValue(O pValue) %7B%0D%0A%09%09value = pValue;%0D%0A%09%7D%0D%0A%0D%0A%09public String getStrValue() %7B%0D%0A%09%09return strValue;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setStrValue(String pStrValue) %7B%0D%0A%09%09strValue = pStrValue;%0D%0A%09%09setGiven(true);%0D%0A%09%09final O value = asValue(pStrValue);%0D%0A%09%09setValue(value);%0D%0A%09%7D%0D%0A%0D%0A%09public String%5B%5D getNames() %7B%0D%0A%09%09return names;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setNames(String%5B%5D pNames) %7B%0D%0A%09%09names = pNames;%0D%0A%09%7D%0D%0A%0D%0A%09public String%5B%5D getDescription() %7B%0D%0A%09%09return description;%0D%0A%09%7D%0D%0A%0D%0A%09protected void setDescription(String%5B%5D pDescription) %7B%0D%0A%09%09description = pDescription;%0D%0A%09%7D%0D%0A%0D%0A%09protected abstract O asValue(String pStrValue);%0D%0A%0D%0A%09protected abstract boolean isValueRequired();%0D%0A%7D%0D%0A

Work on the stream package.