[
  {
    "path": ".idea/.name",
    "content": "JavaLearning"
  },
  {
    "path": ".idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <resourceExtensions />\n    <wildcardResourcePatterns>\n      <entry name=\"!?*.java\" />\n      <entry name=\"!?*.form\" />\n      <entry name=\"!?*.class\" />\n      <entry name=\"!?*.groovy\" />\n      <entry name=\"!?*.scala\" />\n      <entry name=\"!?*.flex\" />\n      <entry name=\"!?*.kt\" />\n      <entry name=\"!?*.clj\" />\n      <entry name=\"!?*.aj\" />\n    </wildcardResourcePatterns>\n    <annotationProcessing>\n      <profile default=\"true\" name=\"Default\" enabled=\"false\">\n        <processorPath useClasspath=\"true\" />\n      </profile>\n    </annotationProcessing>\n  </component>\n</project>"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "content": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": ".idea/encodings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\">\n    <file url=\"PROJECT\" charset=\"UTF-8\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"EntryPointsManager\">\n    <entry_points version=\"2.0\" />\n  </component>\n  <component name=\"MavenImportPreferences\">\n    <option name=\"generalSettings\">\n      <MavenGeneralSettings>\n        <option name=\"mavenHome\" value=\"Bundled (Maven 3)\" />\n      </MavenGeneralSettings>\n    </option>\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"false\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_8\" default=\"true\" assert-keyword=\"true\" jdk-15=\"true\" project-jdk-name=\"1.8\" project-jdk-type=\"JavaSDK\">\n    <output url=\"file://$PROJECT_DIR$/out\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/Basic-java/Basic-java.iml\" filepath=\"$PROJECT_DIR$/Basic-java/Basic-java.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/uiDesigner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Palette2\">\n    <group name=\"Swing\">\n      <item class=\"com.intellij.uiDesigner.HSpacer\" tooltip-text=\"Horizontal Spacer\" icon=\"/com/intellij/uiDesigner/icons/hspacer.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"1\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"com.intellij.uiDesigner.VSpacer\" tooltip-text=\"Vertical Spacer\" icon=\"/com/intellij/uiDesigner/icons/vspacer.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"1\" anchor=\"0\" fill=\"2\" />\n      </item>\n      <item class=\"javax.swing.JPanel\" icon=\"/com/intellij/uiDesigner/icons/panel.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JScrollPane\" icon=\"/com/intellij/uiDesigner/icons/scrollPane.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"7\" hsize-policy=\"7\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JButton\" icon=\"/com/intellij/uiDesigner/icons/button.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"0\" fill=\"1\" />\n        <initial-values>\n          <property name=\"text\" value=\"Button\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JRadioButton\" icon=\"/com/intellij/uiDesigner/icons/radioButton.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"RadioButton\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JCheckBox\" icon=\"/com/intellij/uiDesigner/icons/checkBox.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"CheckBox\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JLabel\" icon=\"/com/intellij/uiDesigner/icons/label.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"0\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"Label\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JTextField\" icon=\"/com/intellij/uiDesigner/icons/textField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JPasswordField\" icon=\"/com/intellij/uiDesigner/icons/passwordField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JFormattedTextField\" icon=\"/com/intellij/uiDesigner/icons/formattedTextField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTextArea\" icon=\"/com/intellij/uiDesigner/icons/textArea.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTextPane\" icon=\"/com/intellij/uiDesigner/icons/textPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JEditorPane\" icon=\"/com/intellij/uiDesigner/icons/editorPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JComboBox\" icon=\"/com/intellij/uiDesigner/icons/comboBox.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"2\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JTable\" icon=\"/com/intellij/uiDesigner/icons/table.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JList\" icon=\"/com/intellij/uiDesigner/icons/list.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"2\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTree\" icon=\"/com/intellij/uiDesigner/icons/tree.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTabbedPane\" icon=\"/com/intellij/uiDesigner/icons/tabbedPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"200\" height=\"200\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JSplitPane\" icon=\"/com/intellij/uiDesigner/icons/splitPane.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"200\" height=\"200\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JSpinner\" icon=\"/com/intellij/uiDesigner/icons/spinner.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JSlider\" icon=\"/com/intellij/uiDesigner/icons/slider.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JSeparator\" icon=\"/com/intellij/uiDesigner/icons/separator.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JProgressBar\" icon=\"/com/intellij/uiDesigner/icons/progressbar.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JToolBar\" icon=\"/com/intellij/uiDesigner/icons/toolbar.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\">\n          <preferred-size width=\"-1\" height=\"20\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JToolBar$Separator\" icon=\"/com/intellij/uiDesigner/icons/toolbarSeparator.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"0\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JScrollBar\" icon=\"/com/intellij/uiDesigner/icons/scrollbar.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"0\" anchor=\"0\" fill=\"2\" />\n      </item>\n    </group>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"$PROJECT_DIR$\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"0d6b1f02-d1bf-40e9-8d49-8f37a7a4eb68\" name=\"Default\" comment=\"\" />\n    <ignored path=\"JavaLearning.iws\" />\n    <ignored path=\".idea/workspace.xml\" />\n    <ignored path=\"$PROJECT_DIR$/out/\" />\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"TRACKING_ENABLED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"ChangesViewManager\" flattened_view=\"true\" show_ignored=\"false\" />\n  <component name=\"CoverageDataManager\">\n    <SUITE FILE_PATH=\"coverage/JavaLearning$EnumTest.coverage\" NAME=\"EnumTest Coverage Results\" MODIFIED=\"1486909296779\" SOURCE_PROVIDER=\"com.intellij.coverage.DefaultCoverageFileProvider\" RUNNER=\"idea\" COVERAGE_BY_TEST_ENABLED=\"false\" COVERAGE_TRACING_ENABLED=\"false\">\n      <FILTER>com.crow.*</FILTER>\n    </SUITE>\n  </component>\n  <component name=\"CreatePatchCommitExecutor\">\n    <option name=\"PATCH_PATH\" value=\"\" />\n  </component>\n  <component name=\"ExecutionTargetManager\" SELECTED_TARGET=\"default_target\" />\n  <component name=\"FavoritesManager\">\n    <favorites_list name=\"JavaLearning\" />\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf SIDE_TABS_SIZE_LIMIT_KEY=\"300\">\n      <file leaf-file-name=\"GenericTest.java\" pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.9072165\">\n              <caret line=\"49\" column=\"1\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"49\" selection-end-column=\"1\" />\n              <folding>\n                <element signature=\"imports\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"ProxyTest.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\">\n              <caret line=\"19\" column=\"0\" selection-start-line=\"19\" selection-start-column=\"0\" selection-end-line=\"19\" selection-end-column=\"0\" />\n              <folding>\n                <element signature=\"imports\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"Advice.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\">\n              <caret line=\"10\" column=\"1\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"10\" selection-end-column=\"1\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"ImpAdvice.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\">\n              <caret line=\"13\" column=\"0\" selection-start-line=\"13\" selection-start-column=\"0\" selection-end-line=\"13\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"FileTemplateManagerImpl\">\n    <option name=\"RECENT_TEMPLATES\">\n      <list>\n        <option value=\"Interface\" />\n        <option value=\"Class\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"Git.Settings\">\n    <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$\" />\n  </component>\n  <component name=\"GradleLocalSettings\">\n    <option name=\"externalProjectsViewState\">\n      <projects_view />\n    </option>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/Reflect/FieldReflect.java\" />\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/Reflect/ReflectTest.java\" />\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/EnumTest.java\" />\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/EnumCoin.java\" />\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/Enumeration/EnumCoin.java\" />\n        <option value=\"$PROJECT_DIR$/jdk5-new/src/com/crow/Enumeration/EnumTest.java\" />\n        <option value=\"$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java\" />\n        <option value=\"$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java\" />\n        <option value=\"$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java\" />\n        <option value=\"$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"ProjectFrameBounds\">\n    <option name=\"y\" value=\"23\" />\n    <option name=\"width\" value=\"1440\" />\n    <option name=\"height\" value=\"832\" />\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"true\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator currentView=\"ProjectPane\" proportions=\"\" version=\"1\">\n      <flattenPackages />\n      <showMembers />\n      <showModules />\n      <showLibraryContents />\n      <hideEmptyPackages ProjectPane=\"false\" />\n      <abbreviatePackageNames />\n      <autoscrollToSource />\n      <autoscrollFromSource />\n      <sortByType />\n      <manualOrder />\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"Scratches\" />\n      <pane id=\"Scope\" />\n      <pane id=\"PackagesPane\" />\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"External Libraries\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"&lt; 1.8 &gt;\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Basic-java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Basic-java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"com\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"crow\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Reflect\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Basic-java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"com\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"crow\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Proxy\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Basic-java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"com\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"crow\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Generic\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"JavaLearning\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Basic-java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"com\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"crow\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"Enumeration\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n        </subPane>\n      </pane>\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"settings.editor.selected.configurable\" value=\"editor.preferences.appearance\" />\n    <property name=\"settings.editor.splitter.proportion\" value=\"0.2\" />\n    <property name=\"project.structure.last.edited\" value=\"Modules\" />\n    <property name=\"project.structure.proportion\" value=\"0.0\" />\n    <property name=\"project.structure.side.proportion\" value=\"0.0\" />\n    <property name=\"last_opened_file_path\" value=\"$PROJECT_DIR$\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"CopyClassDialog.RECENTS_KEY\">\n      <recent name=\"com.crow.Enumeration\" />\n    </key>\n  </component>\n  <component name=\"RunManager\" selected=\"Application.ProxyTest\">\n    <configuration default=\"false\" name=\"ReflectTest\" type=\"Application\" factoryName=\"Application\" temporary=\"true\" nameIsGenerated=\"true\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\">\n        <pattern>\n          <option name=\"PATTERN\" value=\"com.crow.Reflect.*\" />\n          <option name=\"ENABLED\" value=\"true\" />\n        </pattern>\n      </extension>\n      <option name=\"MAIN_CLASS_NAME\" value=\"com.crow.Reflect.ReflectTest\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"jdk5-new\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"false\" name=\"EnumTest\" type=\"Application\" factoryName=\"Application\" temporary=\"true\" nameIsGenerated=\"true\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\">\n        <pattern>\n          <option name=\"PATTERN\" value=\"com.crow.*\" />\n          <option name=\"ENABLED\" value=\"true\" />\n        </pattern>\n      </extension>\n      <option name=\"MAIN_CLASS_NAME\" value=\"com.crow.Enumeration.EnumTest\" />\n      <option name=\"VM_PARAMETERS\" value=\"\" />\n      <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"file://$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"false\" name=\"GenericTest\" type=\"Application\" factoryName=\"Application\" temporary=\"true\" nameIsGenerated=\"true\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\">\n        <pattern>\n          <option name=\"PATTERN\" value=\"com.crow.Generic.*\" />\n          <option name=\"ENABLED\" value=\"true\" />\n        </pattern>\n      </extension>\n      <option name=\"MAIN_CLASS_NAME\" value=\"com.crow.Generic.GenericTest\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"Basic-java\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"false\" name=\"ProxyTest\" type=\"Application\" factoryName=\"Application\" temporary=\"true\" nameIsGenerated=\"true\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\">\n        <pattern>\n          <option name=\"PATTERN\" value=\"com.crow.Proxy.*\" />\n          <option name=\"ENABLED\" value=\"true\" />\n        </pattern>\n      </extension>\n      <option name=\"MAIN_CLASS_NAME\" value=\"com.crow.Proxy.ProxyTest\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"Basic-java\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"#org.jetbrains.idea.devkit.run.PluginConfigurationType\" factoryName=\"Plugin\">\n      <module name=\"\" />\n      <option name=\"VM_PARAMETERS\" value=\"-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"AndroidRunConfigurationType\" factoryName=\"Android Application\">\n      <module name=\"\" />\n      <option name=\"ACTIVITY_CLASS\" value=\"\" />\n      <option name=\"MODE\" value=\"default_activity\" />\n      <option name=\"DEPLOY\" value=\"true\" />\n      <option name=\"ARTIFACT_NAME\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"EMULATOR\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"USE_COMMAND_LINE\" value=\"true\" />\n      <option name=\"COMMAND_LINE\" value=\"\" />\n      <option name=\"WIPE_USER_DATA\" value=\"false\" />\n      <option name=\"DISABLE_BOOT_ANIMATION\" value=\"false\" />\n      <option name=\"NETWORK_SPEED\" value=\"full\" />\n      <option name=\"NETWORK_LATENCY\" value=\"none\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"FILTER_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"SELECTED_CLOUD_MATRIX_CONFIGURATION_ID\" value=\"0\" />\n      <option name=\"SELECTED_CLOUD_MATRIX_PROJECT_ID\" value=\"\" />\n      <option name=\"SELECTED_CLOUD_DEVICE_CONFIGURATION_ID\" value=\"0\" />\n      <option name=\"SELECTED_CLOUD_DEVICE_PROJECT_ID\" value=\"\" />\n      <option name=\"IS_VALID_CLOUD_MATRIX_SELECTION\" value=\"false\" />\n      <option name=\"INVALID_CLOUD_MATRIX_SELECTION_ERROR\" value=\"\" />\n      <option name=\"IS_VALID_CLOUD_DEVICE_SELECTION\" value=\"false\" />\n      <option name=\"INVALID_CLOUD_DEVICE_SELECTION_ERROR\" value=\"\" />\n      <option name=\"CLOUD_DEVICE_SERIAL_NUMBER\" value=\"\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"AndroidTestRunConfigurationType\" factoryName=\"Android Tests\">\n      <module name=\"\" />\n      <option name=\"TESTING_TYPE\" value=\"0\" />\n      <option name=\"INSTRUMENTATION_RUNNER_CLASS\" value=\"\" />\n      <option name=\"METHOD_NAME\" value=\"\" />\n      <option name=\"CLASS_NAME\" value=\"\" />\n      <option name=\"PACKAGE_NAME\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"EMULATOR\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"USE_COMMAND_LINE\" value=\"true\" />\n      <option name=\"COMMAND_LINE\" value=\"\" />\n      <option name=\"WIPE_USER_DATA\" value=\"false\" />\n      <option name=\"DISABLE_BOOT_ANIMATION\" value=\"false\" />\n      <option name=\"NETWORK_SPEED\" value=\"full\" />\n      <option name=\"NETWORK_LATENCY\" value=\"none\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"FILTER_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"SELECTED_CLOUD_MATRIX_CONFIGURATION_ID\" value=\"0\" />\n      <option name=\"SELECTED_CLOUD_MATRIX_PROJECT_ID\" value=\"\" />\n      <option name=\"SELECTED_CLOUD_DEVICE_CONFIGURATION_ID\" value=\"0\" />\n      <option name=\"SELECTED_CLOUD_DEVICE_PROJECT_ID\" value=\"\" />\n      <option name=\"IS_VALID_CLOUD_MATRIX_SELECTION\" value=\"false\" />\n      <option name=\"INVALID_CLOUD_MATRIX_SELECTION_ERROR\" value=\"\" />\n      <option name=\"IS_VALID_CLOUD_DEVICE_SELECTION\" value=\"false\" />\n      <option name=\"INVALID_CLOUD_DEVICE_SELECTION_ERROR\" value=\"\" />\n      <option name=\"CLOUD_DEVICE_SERIAL_NUMBER\" value=\"\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Applet\" factoryName=\"Applet\">\n      <option name=\"HTML_USED\" value=\"false\" />\n      <option name=\"WIDTH\" value=\"400\" />\n      <option name=\"HEIGHT\" value=\"300\" />\n      <option name=\"POLICY_FILE\" value=\"$APPLICATION_HOME_DIR$/bin/appletviewer.policy\" />\n      <module />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Application\" factoryName=\"Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"GradleRunConfiguration\" factoryName=\"Gradle\">\n      <ExternalSystemSettings>\n        <option name=\"executionName\" />\n        <option name=\"externalProjectPath\" />\n        <option name=\"externalSystemIdString\" value=\"GRADLE\" />\n        <option name=\"scriptParameters\" />\n        <option name=\"taskDescriptions\">\n          <list />\n        </option>\n        <option name=\"taskNames\">\n          <list />\n        </option>\n        <option name=\"vmOptions\" />\n      </ExternalSystemSettings>\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnit\" factoryName=\"JUnit\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnitTestDiscovery\" factoryName=\"JUnit Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JarApplication\" factoryName=\"JAR Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Java Scratch\" factoryName=\"Java Scratch\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"SCRATCH_FILE_ID\" value=\"0\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JetRunConfigurationType\" factoryName=\"Kotlin\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"jdk5-new\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"KotlinStandaloneScriptRunConfigurationType\" factoryName=\"Kotlin script\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"filePath\" />\n      <option name=\"vmParameters\" />\n      <option name=\"alternativeJrePath\" />\n      <option name=\"programParameters\" />\n      <option name=\"passParentEnvs\" value=\"true\" />\n      <option name=\"workingDirectory\" />\n      <option name=\"isAlternativeJrePathEnabled\" value=\"false\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Remote\" factoryName=\"Remote\">\n      <option name=\"USE_SOCKET_TRANSPORT\" value=\"true\" />\n      <option name=\"SERVER_MODE\" value=\"false\" />\n      <option name=\"SHMEM_ADDRESS\" value=\"javadebug\" />\n      <option name=\"HOST\" value=\"localhost\" />\n      <option name=\"PORT\" value=\"5005\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNG\" factoryName=\"TestNG\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNGTestDiscovery\" factoryName=\"TestNG Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <list size=\"4\">\n      <item index=\"0\" class=\"java.lang.String\" itemvalue=\"Application.ReflectTest\" />\n      <item index=\"1\" class=\"java.lang.String\" itemvalue=\"Application.EnumTest\" />\n      <item index=\"2\" class=\"java.lang.String\" itemvalue=\"Application.GenericTest\" />\n      <item index=\"3\" class=\"java.lang.String\" itemvalue=\"Application.ProxyTest\" />\n    </list>\n    <recent_temporary>\n      <list size=\"4\">\n        <item index=\"0\" class=\"java.lang.String\" itemvalue=\"Application.ProxyTest\" />\n        <item index=\"1\" class=\"java.lang.String\" itemvalue=\"Application.GenericTest\" />\n        <item index=\"2\" class=\"java.lang.String\" itemvalue=\"Application.EnumTest\" />\n        <item index=\"3\" class=\"java.lang.String\" itemvalue=\"Application.ReflectTest\" />\n      </list>\n    </recent_temporary>\n  </component>\n  <component name=\"ShelveChangesManager\" show_recycled=\"false\" />\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"0d6b1f02-d1bf-40e9-8d49-8f37a7a4eb68\" name=\"Default\" comment=\"\" />\n      <created>1486393746329</created>\n      <option name=\"number\" value=\"Default\" />\n      <updated>1486393746329</updated>\n    </task>\n    <task id=\"LOCAL-00001\" summary=\"Generic\">\n      <created>1487217889886</created>\n      <option name=\"number\" value=\"00001\" />\n      <option name=\"project\" value=\"LOCAL\" />\n      <updated>1487217889886</updated>\n    </task>\n    <task id=\"LOCAL-00002\" summary=\"Generic2\">\n      <created>1487234520435</created>\n      <option name=\"number\" value=\"00002\" />\n      <option name=\"project\" value=\"LOCAL\" />\n      <updated>1487234520435</updated>\n    </task>\n    <task id=\"LOCAL-00003\" summary=\"Generic3\">\n      <created>1487234799472</created>\n      <option name=\"number\" value=\"00003\" />\n      <option name=\"project\" value=\"LOCAL\" />\n      <updated>1487234799472</updated>\n    </task>\n    <task id=\"LOCAL-00004\" summary=\"Proxy\">\n      <created>1487592431820</created>\n      <option name=\"number\" value=\"00004\" />\n      <option name=\"project\" value=\"LOCAL\" />\n      <updated>1487592431820</updated>\n    </task>\n    <option name=\"localTasksCounter\" value=\"5\" />\n    <servers />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"0\" y=\"23\" width=\"1440\" height=\"832\" extended-state=\"6\" />\n    <editor active=\"true\" />\n    <layout>\n      <window_info id=\"Palette\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"TODO\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"6\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Messages\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.327654\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Palette&#9;\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Event Log\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Maven Projects\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Version Control\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Run\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" show_stripe_button=\"true\" weight=\"0.327654\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Coverage\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.3298611\" sideWeight=\"0.5\" order=\"-1\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Terminal\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Designer\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Project\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" show_stripe_button=\"true\" weight=\"0.22222222\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Structure\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Ant Build\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"UI Designer\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Favorites\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Debug\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Cvs\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"4\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Message\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Commander\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Inspection\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"5\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Hierarchy\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Find\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n    </layout>\n  </component>\n  <component name=\"Vcs.Log.UiProperties\">\n    <option name=\"RECENTLY_FILTERED_USER_GROUPS\">\n      <collection />\n    </option>\n    <option name=\"RECENTLY_FILTERED_BRANCH_GROUPS\">\n      <collection />\n    </option>\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"VcsManagerConfiguration\">\n    <MESSAGE value=\"Generic\" />\n    <MESSAGE value=\"Generic2\" />\n    <MESSAGE value=\"Generic3\" />\n    <MESSAGE value=\"Proxy\" />\n    <option name=\"LAST_COMMIT_MESSAGE\" value=\"Proxy\" />\n  </component>\n  <component name=\"XDebuggerManager\">\n    <breakpoint-manager />\n    <watches-manager />\n  </component>\n  <component name=\"antWorkspaceConfiguration\">\n    <option name=\"IS_AUTOSCROLL_TO_SOURCE\" value=\"false\" />\n    <option name=\"FILTER_TARGETS\" value=\"false\" />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/ReflectTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"15\" column=\"33\" selection-start-line=\"15\" selection-start-column=\"33\" selection-end-line=\"15\" selection-end-column=\"33\" />\n          <folding>\n            <element signature=\"imports\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/FieldReflect.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"16\" column=\"19\" selection-start-line=\"16\" selection-start-column=\"19\" selection-end-line=\"16\" selection-end-column=\"19\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/Basic-java.iml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Enumeration/EnumTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.371134\">\n          <caret line=\"12\" column=\"0\" selection-start-line=\"12\" selection-start-column=\"0\" selection-end-line=\"12\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Enumeration/EnumCoin.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"5\" column=\"0\" selection-start-line=\"5\" selection-start-column=\"0\" selection-end-line=\"5\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/FieldReflect.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.49484536\">\n          <caret line=\"16\" column=\"19\" selection-start-line=\"16\" selection-start-column=\"19\" selection-end-line=\"16\" selection-end-column=\"19\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/ReflectTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"0\" column=\"24\" selection-start-line=\"0\" selection-start-column=\"24\" selection-end-line=\"0\" selection-end-column=\"24\" />\n          <folding>\n            <element signature=\"imports\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"19\" column=\"0\" selection-start-line=\"19\" selection-start-column=\"0\" selection-end-line=\"19\" selection-end-column=\"0\" />\n          <folding>\n            <element signature=\"imports\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"10\" column=\"1\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"10\" selection-end-column=\"1\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\">\n          <caret line=\"13\" column=\"0\" selection-start-line=\"13\" selection-start-column=\"0\" selection-end-line=\"13\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.9072165\">\n          <caret line=\"49\" column=\"1\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"49\" selection-end-column=\"1\" />\n          <folding>\n            <element signature=\"imports\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ArtifactsStructureConfigurable.UI\">\n        <settings>\n          <artifact-editor />\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"FacetStructureConfigurable.UI\">\n        <settings>\n          <last-edited>No facets are configured</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"GlobalLibrariesConfigurable.UI\">\n        <settings>\n          <last-edited>scala-sdk-2.11.7</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"JdkListConfigurable.UI\">\n        <settings>\n          <last-edited>1.8</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ModuleStructureConfigurable.UI\">\n        <settings>\n          <last-edited>jdk5-new</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n                <option value=\"0.6\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ProjectLibrariesConfigurable.UI\">\n        <settings>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ScopeChooserConfigurable.UI\">\n        <settings>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": "BasicJava.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "Enumeration/Enumeration.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "Enumeration/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>Basic-Java</artifactId>\n        <groupId>com.crow</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>Enumeration</artifactId>\n    <packaging>jar</packaging>\n\n    <name>Enumeration</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "Enumeration/src/main/java/com/crow/EnumCoin.java",
    "content": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/12.\n */\n\npublic abstract class EnumCoin {//Implement an Enum with a common class\n    private int tag;\n    private EnumCoin(int tag){\n        this.tag = tag;\n    }\n    public static final EnumCoin OBCERSE = new EnumCoin(1){//an object of an inner class extending EnumCoin\n        public EnumCoin enumNext(){\n            return BACK;\n        }\n    };\n    public static final EnumCoin BACK = new EnumCoin(0){\n        public EnumCoin enumNext(){\n            return OBCERSE;\n        }\n    };\n\n    public String toString(){\n        return this == OBCERSE?\"Obcerse\":\"Back\";\n    }\n\n/*    public EnumCoin enumNext(){\n        if(this == OBCERSE){\n            return BACK;\n        }\n        else{\n            return OBCERSE;\n        }\n    }*/\n\n    public abstract EnumCoin enumNext();\n}"
  },
  {
    "path": "Enumeration/src/main/java/com/crow/EnumTest.java",
    "content": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/12.\n */\n\npublic class EnumTest {\n    public static void main(String[] args) {\n        EnumCoin obcerse = EnumCoin.OBCERSE;\n        System.out.println(\"The other side of the Obcerse is \" + obcerse.enumNext().toString());\n    }\n}\n"
  },
  {
    "path": "Generic/Generic.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "Generic/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>Basic-Java</artifactId>\n        <groupId>com.crow</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>Generic</artifactId>\n    <packaging>jar</packaging>\n\n    <name>Generic</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "Generic/src/main/java/com/crow/GenericTest.java",
    "content": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/16.\n */\n\n\nimport java.lang.reflect.Method;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimport java.util.Map;\nimport java.util.Set;\n\npublic class GenericTest {\n    public static void main(String[] args) throws Exception{\n        HashMap<String, Integer> hashMap = new HashMap<String, Integer>();\n        hashMap.put(\"Tom\", 1);\n        hashMap.put(\"Jerry\", 2);\n        hashMap.put(\"Nick\", 3);\n        printHashmap(hashMap);\n\n        String[] array = new String[]{\"crow\",\"martin\",\"pattie\"};\n        swap(array, 1, 2);\n        System.out.println(\"array[2] = \" + array[2]);\n\n        //用反射的方法获取printHashmap方法的参数并打印\n        Method printMethod = GenericTest.class.getMethod(\"printHashmap\", HashMap.class);\n        Type[] types = printMethod.getGenericParameterTypes();\n        ParameterizedType parameterizedType = (ParameterizedType)types[0];\n        Type[] actualTypes = parameterizedType.getActualTypeArguments();\n        System.out.println(\"The paratype is \" + parameterizedType.getRawType() + \"<\" + actualTypes[0] + \",\" + actualTypes[1] + \">\");\n    }\n\n\n    public static void printHashmap(HashMap<String, Integer> hashMap){//遍历HashMap并打印其内容\n        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();\n        for(Map.Entry<String, Integer> entry: entrySet){\n            System.out.println(entry.getKey() + \",\" + entry.getValue());\n        }\n        Iterator<Map.Entry<String, Integer>> iter = entrySet.iterator();\n        while(iter.hasNext()){\n            Map.Entry<String, Integer> entry = iter.next();\n            System.out.print(\"Key is \" + entry.getKey() + \",\");\n            System.out.println(\"Value is \" + entry.getValue());\n        }\n    }\n\n    public static <T> void swap(T[] arr, int i, int j){//交换泛型数组中的任意两个元素\n        T tmp = arr[i];\n        arr[i] = arr[j];\n        arr[j] = tmp;\n    }\n}\n"
  },
  {
    "path": "JNAPointer/JNAPointer.java",
    "content": "import com.sun.jna.*;\nimport com.sun.jna.ptr.*;\n\npublic class JNAPointer {\n\n\t/**\n\t * @param args\n\t */\n\tpublic interface CLib extends Library{\n\t\n\t\tpublic interface OpenFunc extends Callback{\n\t\t\tvoid invoke ( IntByReference p1);\n\t\t\t//void invoke(String filename , int i);\n\t\t}\n\t\t\n\t\tpublic class FunCallBack implements OpenFunc{\n\t\t\t@Override\n\t\t\t/*public void invoke(String filename , int i){\n\t\t\t\tSystem.out.println(\"callback called.\");\n\t\t\t\tSystem.out.println(filename);\n\t\t\t}*/\n\t\t\t    public void invoke( IntByReference p1){\n\t\t\t\t\n \t\t\t\tSystem.out.println(p1);\n\t\t\t\tSystem.out.println(\"callback called.\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tvoid init(OpenFunc openfunc);\n\t\tvoid swap( IntByReference p1 , IntByReference p2);\n\t\tvoid test();\n\t}\n\t\n\tpublic static void main(String[] args) {\n\t\n\t\tCLib lib =(CLib)Native.loadLibrary(\"JNALib\", CLib.class);\n\t\tCLib lib2 = (CLib)Native.loadLibrary(\"swap\",CLib.class);\n\t\tCLib.FunCallBack  func = new CLib.FunCallBack();\n\t\tIntByReference p1 = new IntByReference (3);\n\t\tIntByReference p2 = new IntByReference (5);\n\t\tlib.init( func);\n\t    lib2.swap(p1, p2);//Java called C++ pointer\n\t\tlib.test();//C++ callback java\n\t}\n}\n"
  },
  {
    "path": "JNAPointer/README.md",
    "content": "# JNA Sample\n\n---\n\n**Java用JNA跨语言调用C++指针代码，在C++代码外封装一层C接口**\n**Java将C++指针映射为Pointer类**\n\n+ 先执行cppComplie.sh生成动态链接库\n+ 再执行javarun.sh运行Java程序\n"
  },
  {
    "path": "JNAPointer/callback.cpp",
    "content": "#include <stdlib.h>\n#include <iostream>\n\nusing namespace std;\n\nextern \"C\"\n{\n\ttypedef void (*OpenFunc) (const char*, int);\n\t\n\tOpenFunc openfunc=NULL;\n\n\tvoid init(OpenFunc func){\n\t\tcout << \"init called\" <<endl;\n\t\topenfunc = func;\n\t}\n\n\tvoid test(){\n\t\tif(openfunc == NULL){\n\t\t\tcout << \"openfunc is NULL\" << endl;\n\t\t}\n\t\t(*openfunc)(\"test\", 0);\n\t}\n}\n"
  },
  {
    "path": "JNAPointer/cppCompile.sh",
    "content": "#/bin/sh\n\nCURRENT=$(dirname \"$0\")\ncd $CURRENT\nHOMEDIR=`pwd`/../..\n\ng++ callback.cpp -fPIC -shared -o libJNALib.so\ng++ swap.cpp -fPIC -shared -o libswap.so \n"
  },
  {
    "path": "JNAPointer/javarun.sh",
    "content": "#/bin/sh\n\nCURRENT=$(dirname \"$0\")\ncd $CURRENT\nHOMEDIR=`pwd`/../..\n\njavac -cp jna-4.2.1.jar:. JNAPointer.java\njava -cp jna-4.2.1.jar:. JNAPointer\n"
  },
  {
    "path": "JNAPointer/swap.cpp",
    "content": "#include <stdlib.h>\n#include <iostream>\nusing namespace std;\n\nextern \"C\"{\nvoid swap(int *p1,int *p2);\n\n void swap(int *p1,int *p2){\n\t\tcout << \"p1=\"<< *p1 << \",p2=\" << *p2 <<endl;\n\t\tcout << \"swap\"<<endl;\n\t\tint temp;\n\t\ttemp = *p1;\n\t\t*p1 = *p2;\n\t\t*p2 = temp;\n\t\tcout << \"p1=\"<< *p1 << \",p2=\" << *p2 <<endl;\n\t}\n}\n"
  },
  {
    "path": "NIO/NIO.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "NIO/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>Basic-Java</artifactId>\n        <groupId>com.crow</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>NIO</artifactId>\n    <packaging>jar</packaging>\n\n    <name>NIO</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/CopyFile.java",
    "content": "package com.crow;\n\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.FileChannel;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class CopyFile {\n    public static void main(String[] args) throws Exception {\n        if (args.length<2) {\n            System.err.println( \"Usage: java CopyFile infile outfile\" );\n            System.exit( 1 );\n        }\n\n        String infile = args[0];\n        String outfile = args[1];\n\n        FileInputStream fin = new FileInputStream( infile );\n        FileOutputStream fout = new FileOutputStream( outfile );\n\n        FileChannel fcin = fin.getChannel();\n        FileChannel fcout = fout.getChannel();\n\n        ByteBuffer buffer = ByteBuffer.allocate( 1024 );\n\n        while (true) {\n            buffer.clear();\n\n            int r = fcin.read(buffer);\n\n            if (r == -1) {\n                break;\n            }\n\n            buffer.flip();\n\n            fcout.write(buffer);\n        }\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/CreateArrayBuffer.java",
    "content": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class CreateArrayBuffer {\n    static public void main( String args[] ) throws Exception {\n        byte array[] = new byte[1024];\n\n        ByteBuffer buffer = ByteBuffer.wrap( array );\n\n        buffer.put( (byte)'a' );\n        buffer.put( (byte)'b' );\n        buffer.put( (byte)'c' );\n\n        buffer.flip();\n\n        System.out.println( (char)buffer.get() );\n        System.out.println( (char)buffer.get() );\n        System.out.println( (char)buffer.get() );\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/CreateBuffer.java",
    "content": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class CreateBuffer {\n    public static void main( String args[] ) throws Exception {\n        ByteBuffer buffer = ByteBuffer.allocate( 1024 );\n\n        buffer.put( (byte)'a' );\n        buffer.put( (byte)'b' );\n        buffer.put( (byte)'c' );\n\n        buffer.flip();\n\n        System.out.println( (char)buffer.get() );\n        System.out.println( (char)buffer.get() );\n        System.out.println( (char)buffer.get() );\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/MultiPortEcho.java",
    "content": "package com.crow;\n\nimport java.io.IOException;\nimport java.net.InetSocketAddress;\nimport java.net.ServerSocket;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.SelectionKey;\nimport java.nio.channels.Selector;\nimport java.nio.channels.ServerSocketChannel;\nimport java.nio.channels.SocketChannel;\nimport java.util.Iterator;\nimport java.util.Set;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class MultiPortEcho {\n    private int ports[];\n    private ByteBuffer echoBuffer = ByteBuffer.allocate( 1024 );\n\n    public MultiPortEcho( int ports[] ) throws IOException {\n        this.ports = ports;\n\n        go();\n    }\n\n    private void go() throws IOException {\n\n        Selector selector = Selector.open();\n\n        // Open a listener on each port, and register each one\n        // with the selector\n        for (int i=0; i < ports.length; i++) {\n            ServerSocketChannel ssc = ServerSocketChannel.open();\n            ssc.configureBlocking(false);\n            ServerSocket ss = ssc.socket();\n            InetSocketAddress address = new InetSocketAddress(ports[i]);\n            ss.bind(address);\n\n            //将新打开的 ServerSocketChannels 注册到 Selector上，指定监听accept事件\n            SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT);\n            System.out.println(\"Going to listen on \" + ports[i]);\n        }\n\n        while (true) {\n            int num = selector.select();//返回该选择器中对I/O事件准备就绪的channel对应的key的数量\n            Set selectedKeys = selector.selectedKeys();//返回key的集合\n            Iterator it = selectedKeys.iterator();\n            while (it.hasNext()) {//遍历key集合，集合中的元素为SelectionKey类型\n                SelectionKey key = (SelectionKey) it.next();\n                if ((key.readyOps() & SelectionKey.OP_ACCEPT)\n                        == SelectionKey.OP_ACCEPT) {//检查发生了什么类型的事件\n                    // Accept the new connection\n                    ServerSocketChannel ssc = (ServerSocketChannel)key.channel();\n                    SocketChannel sc = ssc.accept();\n                    sc.configureBlocking( false );\n\n                    // Add the new connection to the selector\n                    SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ );//监听read事件\n                    //Selector不会自己从已选择键集中移除SelectionKey实例。必须在处理完通道时自己移除。下次该通道变成就绪时，Selector会再次将其放入已选择键集中。\n                    it.remove();\n\n                    System.out.println( \"Got connection from \"+sc );\n                }else if ((key.readyOps() & SelectionKey.OP_READ)\n                        == SelectionKey.OP_READ) {\n                    // Read the data\n                    SocketChannel sc = (SocketChannel)key.channel();\n\n                    // Echo data\n                    int bytesEchoed = 0;\n                    while (true) {\n                        echoBuffer.clear();\n                        int r = sc.read( echoBuffer );\n\n                        if (r<=0) {\n                            break;\n                        }\n                        echoBuffer.flip();\n\n                        sc.write( echoBuffer );\n                        bytesEchoed += r;\n                    }\n\n                    System.out.println( \"Echoed \"+bytesEchoed+\" from \"+sc );\n\n                    it.remove();\n                }\n            }\n        }\n    }\n\n    public static void main( String args[] ) throws Exception {\n        if (args.length<=0) {\n            System.err.println( \"Usage: java MultiPortEcho port [port port ...]\" );\n            System.exit( 1 );\n        }\n\n        int ports[] = new int[args.length];\n\n        for (int i=0; i<args.length; ++i) {\n            ports[i] = Integer.parseInt( args[i] );\n        }\n\n        new MultiPortEcho( ports );\n    }\n\n\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/ReadAndShow.java",
    "content": "package com.crow;\n\nimport java.io.FileInputStream;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.FileChannel;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class ReadAndShow {//从文件中读取数据并打印\n    public static void main(String[] args) throws Exception{\n        FileInputStream fin = new FileInputStream(\"ReadAndShow.txt\");\n        FileChannel fc = fin.getChannel();\n        ByteBuffer buffer = ByteBuffer.allocate(1024);\n        fc.read(buffer);\n        buffer.flip();\n        for(int i = 0; buffer.remaining() > 0; i++) {\n            System.out.println(\"Character\" + i + \": \" + (char)buffer.get());\n        }\n        fin.close();\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/ScatterGather.java",
    "content": "package com.crow;\n\nimport java.net.InetSocketAddress;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.ServerSocketChannel;\nimport java.nio.channels.SocketChannel;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class ScatterGather {\n    static private final int firstHeaderLength = 2;\n    static private final int secondHeaderLength = 4;\n    static private final int bodyLength = 6;\n\n    static public void main( String args[] ) throws Exception {\n        if (args.length!=1) {\n            System.err.println( \"Usage: java UseScatterGather port\" );\n            System.exit( 1 );\n        }\n\n        int port = Integer.parseInt( args[0] );\n\n        ServerSocketChannel ssc = ServerSocketChannel.open();\n        InetSocketAddress address = new InetSocketAddress( port );\n        ssc.socket().bind( address );\n\n        int messageLength =\n                firstHeaderLength + secondHeaderLength + bodyLength;\n\n        ByteBuffer buffers[] = new ByteBuffer[3];\n        buffers[0] = ByteBuffer.allocate( firstHeaderLength );\n        buffers[1] = ByteBuffer.allocate( secondHeaderLength );\n        buffers[2] = ByteBuffer.allocate( bodyLength );\n\n        SocketChannel sc = ssc.accept();\n\n        while (true) {\n\n            // Scatter-read into buffers\n            int bytesRead = 0;\n            while (bytesRead < messageLength) {\n                long r = sc.read( buffers );\n                bytesRead += r;\n\n                System.out.println( \"r \"+r );\n                for (int i=0; i < buffers.length; ++i) {\n                    ByteBuffer bb = buffers[i];\n                    System.out.println( \"b \" + i + \" \" + bb.position() + \" \" + bb.limit() );\n                }\n            }\n\n            // Process message here\n\n            // Flip buffers\n            for (int i=0; i<buffers.length; ++i) {\n                ByteBuffer bb = buffers[i];\n                bb.flip();\n            }\n\n            // Scatter-write back out\n            long bytesWritten = 0;\n            while (bytesWritten<messageLength) {\n                long r = sc.write( buffers );\n                bytesWritten += r;\n            }\n\n            // Clear buffers\n            for (int i=0; i < buffers.length; ++i) {\n                ByteBuffer bb = buffers[i];\n                bb.clear();\n            }\n\n            System.out.println( bytesRead+\" \"+bytesWritten+\" \"+messageLength );\n        }\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/SliceBuffer.java",
    "content": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class SliceBuffer {\n    public static void main(String[] args) throws Exception {\n        ByteBuffer buffer = ByteBuffer.allocate(10);\n        for(int i = 0; i < buffer.capacity(); i++) {\n            buffer.put((byte) i);\n        }\n\n        buffer.position(3);\n        buffer.limit(7);\n\n        ByteBuffer slice = buffer.slice();\n\n        for(int i = 0; i < slice.capacity(); i++) {\n            byte b = slice.get(i);\n            b *= 11;\n            slice.put(i, b);\n        }\n\n        buffer.position(0);\n        buffer.limit(buffer.capacity());\n\n        while (buffer.hasRemaining()) {\n            System.out.println(buffer.get());\n        }\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/TypesInByteBuffer.java",
    "content": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class TypesInByteBuffer {//在ByteBuffer中放入不同类型的数据\n    public static void main(String args[]) throws Exception{\n        ByteBuffer buffer = ByteBuffer.allocate(1024);\n        buffer.putInt(30);\n        buffer.putChar('a');\n        buffer.putDouble(Math.PI);\n\n        buffer.flip();\n\n        System.out.println(buffer.getInt());\n        System.out.println(buffer.getChar());\n        System.out.println(buffer.getDouble());\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseCharsets.java",
    "content": "package com.crow;\n\nimport java.io.File;\nimport java.io.RandomAccessFile;\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.MappedByteBuffer;\nimport java.nio.channels.FileChannel;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CharsetDecoder;\nimport java.nio.charset.CharsetEncoder;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseCharsets {\n    public static void main(String[] args) throws Exception{\n        String inputFile = \"ReadAndShow.txt\";\n        String outputFile = \"sampleout.txt\";\n        long inputLength = new File( inputFile ).length();\n        RandomAccessFile inf = new RandomAccessFile( inputFile, \"r\" );\n        RandomAccessFile outf = new RandomAccessFile( outputFile, \"rw\" );\n\n        FileChannel infc = inf.getChannel();\n        FileChannel outfc = outf.getChannel();\n\n        MappedByteBuffer inputData =  infc.map(FileChannel.MapMode.READ_ONLY, 0, inputLength);\n        Charset latin1 = Charset.forName( \"ISO-8859-1\" );\n        CharsetDecoder decoder = latin1.newDecoder();//解码器\n        CharsetEncoder encoder = latin1.newEncoder();//编码器\n\n        CharBuffer cb = decoder.decode( inputData );//将字节数据解码为一组字符\n        // Process char data here\n        ByteBuffer outputData = encoder.encode( cb );//要写回数据，我们必须使用 CharsetEncoder 将它转换回字节\n\n        outfc.write( outputData );\n\n        inf.close();\n        outf.close();\n\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseFileLocks.java",
    "content": "package com.crow;\n\nimport java.io.RandomAccessFile;\nimport java.nio.channels.FileChannel;\nimport java.nio.channels.FileLock;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseFileLocks {\n    static private final int start = 10;\n    static private final int end = 20;\n\n    public static void main(String[] args) throws Exception {//使用文件锁的示例\n        RandomAccessFile raf = new RandomAccessFile(\"ReadAndShow.txt\", \"rw\");\n        FileChannel fc = raf.getChannel();\n\n        //Get Lock\n        System.out.println(\"Trying to get lock.\");\n        FileLock lock = fc.lock(start, end, false);\n        System.out.println( \"got lock!\" );\n\n        // Pause\n        System.out.println( \"pausing\" );\n        try {\n            Thread.sleep( 3000 );\n        } catch( InterruptedException ie ) {\n\n        }\n\n        // Release lock\n        System.out.println( \"going to release lock\" );\n        lock.release();\n        System.out.println( \"released lock\" );\n\n        raf.close();\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseFloatBuffer.java",
    "content": "package com.crow;\n\nimport java.nio.FloatBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseFloatBuffer {\n    public static void main(String[] args) throws Exception{\n        FloatBuffer buffer = FloatBuffer.allocate(10);\n        for(int i = 0; i < buffer.capacity(); i++) {\n            float f = (float)Math.sin((((float)i)/10)*(2*Math.PI));\n            buffer.put(f);\n        }\n        buffer.flip();\n        while(buffer.hasRemaining()) {\n            System.out.println(buffer.get());\n        }\n    }\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseMappedFile.java",
    "content": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseMappedFile {\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/WriteSomeBytes.java",
    "content": "package com.crow;\n\nimport java.io.FileOutputStream;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.FileChannel;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class WriteSomeBytes {//将自定义数据写入文件\n    static private final byte[] message = { 83, 111, 109, 101, 32, 98, 121, 116, 101, 115, 46 };\n\n    public static void main(String[] args) throws Exception{\n        FileOutputStream fout = new FileOutputStream(\"somebytes.txt\");\n        FileChannel fc = fout.getChannel();\n        ByteBuffer buffer = ByteBuffer.allocate(1024);\n        for(int i = 0; i < message.length; i++) {\n            buffer.put(message[i]);\n        }\n        buffer.flip();\n        fc.write(buffer);\n        fout.close();\n    }\n}\n"
  },
  {
    "path": "Proxy/Proxy.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "Proxy/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>Basic-Java</artifactId>\n        <groupId>com.crow</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>Proxy</artifactId>\n    <packaging>jar</packaging>\n\n    <name>Proxy</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "Proxy/src/main/java/com/crow/Advice.java",
    "content": "package com.crow;\n\nimport java.lang.reflect.Method;\n\n/**\n * Created by CrowHawk on 17/2/20.\n */\npublic interface Advice {\n    void forwardMethod(Method method);\n    void backMethod(Method method);\n}\n"
  },
  {
    "path": "Proxy/src/main/java/com/crow/ImpAdvice.java",
    "content": "package com.crow;\n\nimport java.lang.reflect.Method;\n\n/**\n * Created by CrowHawk on 17/2/20.\n */\npublic class ImpAdvice implements Advice {\n    long beginTime = 0;\n    public void forwardMethod(Method method){\n        System.out.println(\"end\");\n        beginTime = System.currentTimeMillis();\n    }\n\n    public void backMethod(Method method){\n        System.out.println(\"start\");\n        long endTime = System.currentTimeMillis();\n        System.out.println(method.getName() + \" running time of \" + (endTime - beginTime));\n    }\n}\n"
  },
  {
    "path": "Proxy/src/main/java/com/crow/ProxyTest.java",
    "content": "package com.crow;\n\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.ArrayList;\nimport java.util.Collection;\n\n/**\n * Created by CrowHawk on 17/2/20.\n */\npublic class ProxyTest {\n    public static void main(String args[]){\n        ArrayList<String> target = new ArrayList<>();//创建目标类的实例对象\n        ImpAdvice impAdvice = new ImpAdvice();\n        Collection proxy = (Collection) getProxy(target, impAdvice);//创建动态类\n        proxy.add(\"aa\");\n        System.out.println(proxy.size());\n        System.out.println(proxy.getClass().getName());\n\n    }\n\n    public static Object getProxy(final Object target, final Advice advice){\n        Object proxy = Proxy.newProxyInstance(\n                target.getClass().getClassLoader(),\n                target.getClass().getInterfaces(),\n                new InvocationHandler() {//动态类通过Invocation类的invoke方法调用目标类所需的方法\n                    public Object invoke(Object proxy, Method method, Object[] args) throws Exception {\n                        advice.forwardMethod(method);\n                        Object retVal = method.invoke(target, args);\n                        advice.backMethod(method);\n                        return retVal;\n                    }\n                }\n        );\n        return proxy;\n    }\n\n}\n"
  },
  {
    "path": "README.md",
    "content": "# JavaLearning\n本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识，附有代码和博客讲解，旨在提供一个Java在线共享学习平台,帮助更多的Java学习者入门进阶。\n\n## 代码目录\n+ [Java基础](https://github.com/CrowHawk/JavaLearning/tree/master/Basic-java)：包括枚举、范型、反射、动态代理的用法；\n+ [JNA](https://github.com/CrowHawk/JavaLearning/tree/master/JNAPointer)：演示了JNA的基本用法，使用Java调用C++代码。\n\n## 博客目录\n### Java基础\n+ [Java基础学习(1)——反射](https://crowhawk.github.io/2017/02/12/basic-java-reflect/)\n+ [Java基础学习(2)——注解](https://crowhawk.github.io/2017/02/13/basic-java-annotation/)\n+ [Java基础学习(3)——泛型](https://crowhawk.github.io/2017/02/21/basic-java-generic/)\n+ [Java基础学习(4)——动态代理](https://crowhawk.github.io/2017/02/21/basic-java-proxy/)\n+ [《Java多线程核心技术》读书笔记](https://crowhawk.github.io/2017/07/06/MultiThread/)\n\n### JDK源码\n+ [Java集合框架源码解读(1)——ArrayList、LinkedList和Vector](https://crowhawk.github.io/2017/08/26/collections_1/)\n+ [Java集合框架源码解读(2)——HashMap](https://crowhawk.github.io/2017/08/27/collections_2/)\n+ [Java集合框架源码解读(3)——LinkedHashMap](https://crowhawk.github.io/2017/08/28/collctions_3/)\n+ [Java集合框架源码解读(4)——WeakHashMap](https://crowhawk.github.io/2017/08/29/collection_4/)\n+ [Java集合框架源码解读(5)——TreeMap](https://crowhawk.github.io/2017/08/31/collection_5/)\n\n### JVM\n+ [深入理解JVM(1)——Java内存区域与Java对象](https://crowhawk.github.io/2017/08/09/jvm_1/)\n+ [深入理解JVM(2)——GC算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/)\n+ [深入理解JVM(3)——7种垃圾收集器](https://crowhawk.github.io/2017/08/15/jvm_3/)\n+ [深入理解JVM(4)——如何优化Java GC「译」](https://crowhawk.github.io/2017/08/21/jvm_4/)\n+ [深入理解JVM(5)——虚拟机类加载机制](https://crowhawk.github.io/2017/08/21/jvm_5/)\n+ [深入理解JVM(6)——类加载器](https://crowhawk.github.io/2017/08/21/jvm_6/)\n\n## 联系作者\n[Personal Website：Crow Home](https://crowhawk.github.io/)\n"
  },
  {
    "path": "ReadAndShow.txt",
    "content": "Read And Show."
  },
  {
    "path": "Reflect/Reflect.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:3.8.1\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "Reflect/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>Basic-Java</artifactId>\n        <groupId>com.crow</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>Reflect</artifactId>\n    <packaging>jar</packaging>\n\n    <name>Reflect</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "Reflect/src/main/java/com/crow/FieldReflect.java",
    "content": "package com.crow;\n\n\n/**\n * Created by CrowHawk on 17/2/8.\n */\npublic class FieldReflect {\n    public int a;\n    private int b;\n    public String str1 = \"bat\";\n    public String str2 = \"but\";\n    public String str3 = \"bite\";\n\n    public FieldReflect(){}\n    public FieldReflect(int a,int b){\n        super();\n        this.a = a;\n        this.b = b;\n    }\n    @Override\n    public String toString(){\n        return str1 + \",\" + str2 + \",\" + str3 + \",\" + a + \",\" + b;\n    }\n}\n"
  },
  {
    "path": "Reflect/src/main/java/com/crow/ReflectTest.java",
    "content": "package com.crow;\n\nimport java.io.IOException;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Field;\n\n\n/**\n * Created by CrowHawk on 17/2/8.\n */\npublic class ReflectTest {\n    public static void main(String[] args) throws Exception{\n        FieldReflect fr = refConstructor(1,2);\n        System.out.println(fr.toString());\n        refFieldChange(fr, \"a\");\n        System.out.println(\"fr.a = \" + fr.a);\n        refFieldChange(fr, \"str1\");\n        System.out.println(\"fr.str1 = \" + fr.str1);\n    }\n\n    public static FieldReflect refConstructor(int a, int b) throws Exception{//使用反射构造器创建对象\n        Class[] paralist = {int.class, int.class};\n        Constructor cons = FieldReflect.class.getDeclaredConstructor(paralist);\n        FieldReflect fr = (FieldReflect) cons.newInstance(a, b);\n        return fr;\n    }\n\n    public static void refFieldChange(FieldReflect fr, String fieldName) throws Exception{\n        //使用Field类改变类的实例域,如果是int型,全部设为3,如果是String类型,将String中的\"b\"改为\"c\"\n        Field field = fr.getClass().getDeclaredField(fieldName);\n        field.setAccessible(true);\n        if(field.getType() == int.class){\n            field.set(fr, 3);\n        }\n        else if(field.getType() == String.class) {\n            String string = (String) field.get(fr);\n            string.replace(\"b\", \"c\");\n            field.set(fr, string);\n        }\n        else {\n            throw new IOException();\n        }\n    }\n}\n"
  },
  {
    "path": "pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>com.crow</groupId>\n  <artifactId>Basic-Java</artifactId>\n  <version>1.0-SNAPSHOT</version>\n  <modules>\n    <module>Enumeration</module>\n    <module>Generic</module>\n    <module>Proxy</module>\n    <module>Reflect</module>\n    <module>JNA</module>\n    <module>NIO</module>\n  </modules>\n  <packaging>pom</packaging>\n\n  <name>Basic-Java</name>\n  <url>http://maven.apache.org</url>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  }
]