@@ -0,0 +1,946 @@
+package core.keyChain;%0A%0A/**%0A * Represents a key stroke on the keyboard.%0A */%0Apublic class KeyStroke %7B%0A%09private int key;%0A%09private int modifier;%0A%0A%09public static KeyStroke Of(int key, int modifier) %7B%0A%09%09return new KeyStroke(key, modifier);%0A%09%7D%0A%0A%09private KeyStroke(int key, int modifier) %7B%0A%09%09this.key = key;%0A%09%09this.modifier = modifier;%0A%09%7D%0A%0A%09public int getKey() %7B%0A%09%09return key;%0A%09%7D%0A%0A%09public int getModifier() %7B%0A%09%09return modifier;%0A%09%7D%0A%0A%09@Override%0A%09public int hashCode() %7B%0A%09%09final int prime = 31;%0A%09%09int result = 1;%0A%09%09result = prime * result + key;%0A%09%09result = prime * result + modifier;%0A%09%09return result;%0A%09%7D%0A%0A%09@Override%0A%09public boolean equals(Object obj) %7B%0A%09%09if (this == obj) %7B%0A%09%09%09return true;%0A%09%09%7D%0A%09%09if (obj == null) %7B%0A%09%09%09return false;%0A%09%09%7D%0A%09%09if (getClass() != obj.getClass()) %7B%0A%09%09%09return false;%0A%09%09%7D%0A%09%09KeyStroke other = (KeyStroke) obj;%0A%09%09if (key != other.key) %7B%0A%09%09%09return false;%0A%09%09%7D%0A%09%09if (modifier != other.modifier) %7B%0A%09%09%09return false;%0A%09%09%7D%0A%09%09return true;%0A%09%7D%0A%7D%0A

Add missing keystroke java source