diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,27 @@
+Copyright 2012 Tony Morris
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the author nor the names of his contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+main = defaultMain
+
diff --git a/java-character.cabal b/java-character.cabal
new file mode 100644
--- /dev/null
+++ b/java-character.cabal
@@ -0,0 +1,57 @@
+Name:               java-character
+Version:            0.0.1
+License:            BSD3
+License-File:       LICENSE
+Author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
+Maintainer:         Tony Morris
+Copyright:          Tony Morris
+Synopsis:           Functions to simulate Java's Character class.
+Category:           Development
+Description:        Functions to simulate the java.lang.Character class of Java. The specification of this class is required to implement some programming language grammars.
+Homepage:           https://github.com/tonymorris/java-character
+Cabal-Version:      >= 1.6
+Build-Type:         Simple
+
+Source-Repository   head
+  Type:             git
+  Location:         git@github.com:tonymorris/java-character.git
+
+Flag                small_base
+  Description:      Choose the new, split-up base package.
+
+Library
+  Build-Depends:
+                      base < 5 && >= 3
+                    , containers <= 0.4.0.0
+
+  GHC-Options:
+                    -Wall
+
+  Hs-Source-Dirs:
+                    src
+
+  Exposed-Modules:
+                    Language.Java.Character
+                    Language.Java.Character.IsDefined
+                    Language.Java.Character.IsDigit
+                    Language.Java.Character.IsIdentifierIgnorable
+                    Language.Java.Character.IsIsoControl
+                    Language.Java.Character.IsJavaIdentifierPart
+                    Language.Java.Character.IsJavaIdentifierStart
+                    Language.Java.Character.IsLetter
+                    Language.Java.Character.IsLetterOrDigit
+                    Language.Java.Character.IsLowerCase
+                    Language.Java.Character.IsMirrored
+                    Language.Java.Character.IsSpaceChar
+                    Language.Java.Character.IsSupplementaryCodePoint
+                    Language.Java.Character.IsTitleCase
+                    Language.Java.Character.IsUnicodeIdentifierPart
+                    Language.Java.Character.IsUnicodeIdentifierStart
+                    Language.Java.Character.IsUpperCase
+                    Language.Java.Character.IsValidCodePoint
+                    Language.Java.Character.IsWhitespace
+
+  GHC-Options:
+                   -Wall
+                   -funbox-strict-fields
+
diff --git a/src/Language/Java/Character.hs b/src/Language/Java/Character.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character.hs
@@ -0,0 +1,21 @@
+-- | Simulates methods of @java.lang.Character@. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html>
+module Language.Java.Character(module C) where
+
+import Language.Java.Character.IsDefined as C
+import Language.Java.Character.IsDigit as C
+import Language.Java.Character.IsIdentifierIgnorable as C
+import Language.Java.Character.IsIsoControl as C
+import Language.Java.Character.IsJavaIdentifierPart as C
+import Language.Java.Character.IsJavaIdentifierStart as C
+import Language.Java.Character.IsLetter as C
+import Language.Java.Character.IsLetterOrDigit as C
+import Language.Java.Character.IsLowerCase as C
+import Language.Java.Character.IsMirrored as C
+import Language.Java.Character.IsSpaceChar as C
+import Language.Java.Character.IsSupplementaryCodePoint as C
+import Language.Java.Character.IsTitleCase as C
+import Language.Java.Character.IsUnicodeIdentifierPart as C
+import Language.Java.Character.IsUnicodeIdentifierStart as C
+import Language.Java.Character.IsUpperCase as C
+import Language.Java.Character.IsValidCodePoint as C
+import Language.Java.Character.IsWhitespace as C
diff --git a/src/Language/Java/Character/IsDefined.hs b/src/Language/Java/Character/IsDefined.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsDefined.hs
@@ -0,0 +1,459 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isDefined%28int%29>
+module Language.Java.Character.IsDefined
+(
+  IsDefined(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isDefined@.
+class Enum c => IsDefined c where
+  isDefined ::
+    c
+    -> Bool
+  isNotDefined ::
+    c
+    -> Bool
+  isNotDefined =
+    not . isDefined
+
+instance IsDefined Char where
+  isDefined c =
+    ord c `S.member` isDefinedSet
+
+instance IsDefined Int where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance IsDefined Integer where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance IsDefined Word8 where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance IsDefined Word16 where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance IsDefined Word32 where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance IsDefined Word64 where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+instance HasResolution a => IsDefined (Fixed a) where
+  isDefined c =
+    c `S.member` isDefinedSet
+
+isDefinedSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isDefinedSet =
+  let r = [
+            [0..566]
+          , [592..855]
+          , [861..879]
+          , [884..885]
+          , [890]
+          , [894]
+          , [900..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1019]
+          , [1024..1158]
+          , [1160..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369..1375]
+          , [1377..1415]
+          , [1417..1418]
+          , [1425..1441]
+          , [1443..1465]
+          , [1467..1476]
+          , [1488..1514]
+          , [1520..1524]
+          , [1536..1539]
+          , [1548..1557]
+          , [1563]
+          , [1567]
+          , [1569..1594]
+          , [1600..1624]
+          , [1632..1805]
+          , [1807..1866]
+          , [1869..1871]
+          , [1920..1969]
+          , [2305..2361]
+          , [2364..2381]
+          , [2384..2388]
+          , [2392..2416]
+          , [2433..2435]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2492..2500]
+          , [2503..2504]
+          , [2507..2509]
+          , [2519]
+          , [2524..2525]
+          , [2527..2531]
+          , [2534..2554]
+          , [2561..2563]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2620]
+          , [2622..2626]
+          , [2631..2632]
+          , [2635..2637]
+          , [2649..2652]
+          , [2654]
+          , [2662..2676]
+          , [2689..2691]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2748..2757]
+          , [2759..2761]
+          , [2763..2765]
+          , [2768]
+          , [2784..2787]
+          , [2790..2799]
+          , [2801]
+          , [2817..2819]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2876..2883]
+          , [2887..2888]
+          , [2891..2893]
+          , [2902..2903]
+          , [2908..2909]
+          , [2911..2913]
+          , [2918..2929]
+          , [2946..2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3006..3010]
+          , [3014..3016]
+          , [3018..3021]
+          , [3031]
+          , [3047..3066]
+          , [3073..3075]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3134..3140]
+          , [3142..3144]
+          , [3146..3149]
+          , [3157..3158]
+          , [3168..3169]
+          , [3174..3183]
+          , [3202..3203]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3260..3268]
+          , [3270..3272]
+          , [3274..3277]
+          , [3285..3286]
+          , [3294]
+          , [3296..3297]
+          , [3302..3311]
+          , [3330..3331]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3390..3395]
+          , [3398..3400]
+          , [3402..3405]
+          , [3415]
+          , [3424..3425]
+          , [3430..3439]
+          , [3458..3459]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3530]
+          , [3535..3540]
+          , [3542]
+          , [3544..3551]
+          , [3570..3572]
+          , [3585..3642]
+          , [3647..3675]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3769]
+          , [3771..3773]
+          , [3776..3780]
+          , [3782]
+          , [3784..3789]
+          , [3792..3801]
+          , [3804..3805]
+          , [3840..3911]
+          , [3913..3946]
+          , [3953..3979]
+          , [3984..3991]
+          , [3993..4028]
+          , [4030..4044]
+          , [4047]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4140..4146]
+          , [4150..4153]
+          , [4160..4185]
+          , [4256..4293]
+          , [4304..4344]
+          , [4347]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [4961..4988]
+          , [5024..5108]
+          , [5121..5750]
+          , [5760..5788]
+          , [5792..5872]
+          , [5888..5900]
+          , [5902..5908]
+          , [5920..5942]
+          , [5952..5971]
+          , [5984..5996]
+          , [5998..6000]
+          , [6002..6003]
+          , [6016..6109]
+          , [6112..6121]
+          , [6128..6137]
+          , [6144..6158]
+          , [6160..6169]
+          , [6176..6263]
+          , [6272..6313]
+          , [6400..6428]
+          , [6432..6443]
+          , [6448..6459]
+          , [6464]
+          , [6468..6509]
+          , [6512..6516]
+          , [6624..6655]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8132]
+          , [8134..8147]
+          , [8150..8155]
+          , [8157..8175]
+          , [8178..8180]
+          , [8182..8190]
+          , [8192..8276]
+          , [8279]
+          , [8287..8291]
+          , [8298..8305]
+          , [8308..8334]
+          , [8352..8369]
+          , [8400..8426]
+          , [8448..8507]
+          , [8509..8523]
+          , [8531..8579]
+          , [8592..9168]
+          , [9216..9254]
+          , [9280..9290]
+          , [9312..9751]
+          , [9753..9853]
+          , [9856..9873]
+          , [9888..9889]
+          , [9985..9988]
+          , [9990..9993]
+          , [9996..10023]
+          , [10025..10059]
+          , [10061]
+          , [10063..10066]
+          , [10070]
+          , [10072..10078]
+          , [10081..10132]
+          , [10136..10159]
+          , [10161..10174]
+          , [10192..10219]
+          , [10224..11021]
+          , [11904..11929]
+          , [11931..12019]
+          , [12032..12245]
+          , [12272..12283]
+          , [12288..12351]
+          , [12353..12438]
+          , [12441..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12688..12727]
+          , [12784..12830]
+          , [12832..12867]
+          , [12880..12925]
+          , [12927..13054]
+          , [13056..19893]
+          , [19904..40869]
+          , [40960..42124]
+          , [42128..42182]
+          , [44032..55203]
+          , [55296..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64831]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65021]
+          , [65024..65039]
+          , [65056..65059]
+          , [65072..65106]
+          , [65108..65126]
+          , [65128..65131]
+          , [65136..65140]
+          , [65142..65276]
+          , [65279]
+          , [65281..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65504..65510]
+          , [65512..65518]
+          , [65529..65533]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [65792..65794]
+          , [65799..65843]
+          , [65847..65855]
+          , [66304..66334]
+          , [66336..66339]
+          , [66352..66378]
+          , [66432..66461]
+          , [66463]
+          , [66560..66717]
+          , [66720..66729]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [118784..119029]
+          , [119040..119078]
+          , [119082..119261]
+          , [119552..119638]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120777]
+          , [120782..120831]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsDigit.hs b/src/Language/Java/Character/IsDigit.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsDigit.hs
@@ -0,0 +1,85 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isDigit%28int%29>
+module Language.Java.Character.IsDigit
+(
+  IsDigit(..)
+) where
+
+import Data.Char hiding (isDigit)
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isDigit@.
+class Enum c => IsDigit c where
+  isDigit ::
+    c
+    -> Bool
+  isNotDigit ::
+    c
+    -> Bool
+  isNotDigit =
+    not . isDigit
+
+instance IsDigit Char where
+  isDigit c =
+    ord c `S.member` isDigitSet
+
+instance IsDigit Int where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance IsDigit Integer where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance IsDigit Word8 where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance IsDigit Word16 where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance IsDigit Word32 where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance IsDigit Word64 where
+  isDigit c =
+    c `S.member` isDigitSet
+
+instance HasResolution a => IsDigit (Fixed a) where
+  isDigit c =
+    c `S.member` isDigitSet
+
+isDigitSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isDigitSet =
+  let r = [
+            [48..57]
+          , [1632..1641]
+          , [1776..1785]
+          , [2406..2415]
+          , [2534..2543]
+          , [2662..2671]
+          , [2790..2799]
+          , [2918..2927]
+          , [3047..3055]
+          , [3174..3183]
+          , [3302..3311]
+          , [3430..3439]
+          , [3664..3673]
+          , [3792..3801]
+          , [3872..3881]
+          , [4160..4169]
+          , [4969..4977]
+          , [6112..6121]
+          , [6160..6169]
+          , [6470..6479]
+          , [65296..65305]
+          , [66720..66729]
+          , [120782..120831]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsIdentifierIgnorable.hs b/src/Language/Java/Character/IsIdentifierIgnorable.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsIdentifierIgnorable.hs
@@ -0,0 +1,77 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isIdentifierIgnorable%28int%29>
+module Language.Java.Character.IsIdentifierIgnorable
+(
+  IsIdentifierIgnorable(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isIdentifierIgnorable@.
+class Enum c => IsIdentifierIgnorable c where
+  isIdentifierIgnorable ::
+    c
+    -> Bool
+  isNotIdentifierIgnorable ::
+    c
+    -> Bool
+  isNotIdentifierIgnorable =
+    not . isIdentifierIgnorable
+
+instance IsIdentifierIgnorable Char where
+  isIdentifierIgnorable c =
+    ord c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Int where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Integer where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Word8 where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Word16 where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Word32 where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance IsIdentifierIgnorable Word64 where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+instance HasResolution a => IsIdentifierIgnorable (Fixed a) where
+  isIdentifierIgnorable c =
+    c `S.member` isIdentifierIgnorableSet
+
+isIdentifierIgnorableSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isIdentifierIgnorableSet =
+  let r = [
+            [0..8]
+          , [14..27]
+          , [127..159]
+          , [173]
+          , [1536..1539]
+          , [1757]
+          , [1807]
+          , [6068..6069]
+          , [8204..8207]
+          , [8234..8238]
+          , [8288..8291]
+          , [8298..8303]
+          , [65279]
+          , [65529..65531]
+          , [119155..119162]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsIsoControl.hs b/src/Language/Java/Character/IsIsoControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsIsoControl.hs
@@ -0,0 +1,64 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isISOControl%28int%29>
+module Language.Java.Character.IsIsoControl
+(
+  IsIsoControl(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isISOControl@.
+class Enum c => IsIsoControl c where
+  isIsoControl ::
+    c
+    -> Bool
+  isNotIsoControl ::
+    c
+    -> Bool
+  isNotIsoControl =
+    not . isIsoControl
+
+instance IsIsoControl Char where
+  isIsoControl c =
+    ord c `S.member` isIsoControlSet
+
+instance IsIsoControl Int where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance IsIsoControl Integer where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance IsIsoControl Word8 where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance IsIsoControl Word16 where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance IsIsoControl Word32 where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance IsIsoControl Word64 where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+instance HasResolution a => IsIsoControl (Fixed a) where
+  isIsoControl c =
+    c `S.member` isIsoControlSet
+
+isIsoControlSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isIsoControlSet =
+  let r = [
+            [0..31]
+          , [127..159]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsJavaIdentifierPart.hs b/src/Language/Java/Character/IsJavaIdentifierPart.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsJavaIdentifierPart.hs
@@ -0,0 +1,502 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isJavaIdentifierPart%28int%29>
+module Language.Java.Character.IsJavaIdentifierPart
+(
+  IsJavaIdentifierPart(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isJavaIdentifierPart@.
+class Enum c => IsJavaIdentifierPart c where
+  isJavaIdentifierPart ::
+    c
+    -> Bool
+  isNotJavaIdentifierPart ::
+    c
+    -> Bool
+  isNotJavaIdentifierPart =
+    not . isJavaIdentifierPart
+
+instance IsJavaIdentifierPart Char where
+  isJavaIdentifierPart c =
+    ord c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Int where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Integer where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Word8 where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Word16 where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Word32 where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance IsJavaIdentifierPart Word64 where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+instance HasResolution a => IsJavaIdentifierPart (Fixed a) where
+  isJavaIdentifierPart c =
+    c `S.member` isJavaIdentifierPartSet
+
+isJavaIdentifierPartSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isJavaIdentifierPartSet =
+  let r = [
+            [0..8]
+          , [14..27]
+          , [36]
+          , [48..57]
+          , [65..90]
+          , [95]
+          , [97..122]
+          , [127..159]
+          , [162..165]
+          , [170]
+          , [173]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [768..855]
+          , [861..879]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1155..1158]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1425..1441]
+          , [1443..1465]
+          , [1467..1469]
+          , [1471]
+          , [1473..1474]
+          , [1476]
+          , [1488..1514]
+          , [1520..1522]
+          , [1536..1539]
+          , [1552..1557]
+          , [1569..1594]
+          , [1600..1624]
+          , [1632..1641]
+          , [1646..1747]
+          , [1749..1757]
+          , [1759..1768]
+          , [1770..1788]
+          , [1791]
+          , [1807..1866]
+          , [1869..1871]
+          , [1920..1969]
+          , [2305..2361]
+          , [2364..2381]
+          , [2384..2388]
+          , [2392..2403]
+          , [2406..2415]
+          , [2433..2435]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2492..2500]
+          , [2503..2504]
+          , [2507..2509]
+          , [2519]
+          , [2524..2525]
+          , [2527..2531]
+          , [2534..2547]
+          , [2561..2563]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2620]
+          , [2622..2626]
+          , [2631..2632]
+          , [2635..2637]
+          , [2649..2652]
+          , [2654]
+          , [2662..2676]
+          , [2689..2691]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2748..2757]
+          , [2759..2761]
+          , [2763..2765]
+          , [2768]
+          , [2784..2787]
+          , [2790..2799]
+          , [2801]
+          , [2817..2819]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2876..2883]
+          , [2887..2888]
+          , [2891..2893]
+          , [2902..2903]
+          , [2908..2909]
+          , [2911..2913]
+          , [2918..2927]
+          , [2929]
+          , [2946..2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3006..3010]
+          , [3014..3016]
+          , [3018..3021]
+          , [3031]
+          , [3047..3055]
+          , [3065]
+          , [3073..3075]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3134..3140]
+          , [3142..3144]
+          , [3146..3149]
+          , [3157..3158]
+          , [3168..3169]
+          , [3174..3183]
+          , [3202..3203]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3260..3268]
+          , [3270..3272]
+          , [3274..3277]
+          , [3285..3286]
+          , [3294]
+          , [3296..3297]
+          , [3302..3311]
+          , [3330..3331]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3390..3395]
+          , [3398..3400]
+          , [3402..3405]
+          , [3415]
+          , [3424..3425]
+          , [3430..3439]
+          , [3458..3459]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3530]
+          , [3535..3540]
+          , [3542]
+          , [3544..3551]
+          , [3570..3571]
+          , [3585..3642]
+          , [3647..3662]
+          , [3664..3673]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3769]
+          , [3771..3773]
+          , [3776..3780]
+          , [3782]
+          , [3784..3789]
+          , [3792..3801]
+          , [3804..3805]
+          , [3840]
+          , [3864..3865]
+          , [3872..3881]
+          , [3893]
+          , [3895]
+          , [3897]
+          , [3902..3911]
+          , [3913..3946]
+          , [3953..3972]
+          , [3974..3979]
+          , [3984..3991]
+          , [3993..4028]
+          , [4038]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4140..4146]
+          , [4150..4153]
+          , [4160..4169]
+          , [4176..4185]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [4969..4977]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5870..5872]
+          , [5888..5900]
+          , [5902..5908]
+          , [5920..5940]
+          , [5952..5971]
+          , [5984..5996]
+          , [5998..6000]
+          , [6002..6003]
+          , [6016..6099]
+          , [6103]
+          , [6107..6109]
+          , [6112..6121]
+          , [6155..6157]
+          , [6160..6169]
+          , [6176..6263]
+          , [6272..6313]
+          , [6400..6428]
+          , [6432..6443]
+          , [6448..6459]
+          , [6470..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8204..8207]
+          , [8234..8238]
+          , [8255..8256]
+          , [8276]
+          , [8288..8291]
+          , [8298..8303]
+          , [8305]
+          , [8319]
+          , [8352..8369]
+          , [8400..8412]
+          , [8417]
+          , [8421..8426]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [8544..8579]
+          , [12293..12295]
+          , [12321..12335]
+          , [12337..12341]
+          , [12344..12348]
+          , [12353..12438]
+          , [12441..12442]
+          , [12445..12447]
+          , [12449..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65020]
+          , [65024..65039]
+          , [65056..65059]
+          , [65075..65076]
+          , [65101..65103]
+          , [65129]
+          , [65136..65140]
+          , [65142..65276]
+          , [65279]
+          , [65284]
+          , [65296..65305]
+          , [65313..65338]
+          , [65343]
+          , [65345..65370]
+          , [65381..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65504..65505]
+          , [65509..65510]
+          , [65529..65531]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66378]
+          , [66432..66461]
+          , [66560..66717]
+          , [66720..66729]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119141..119145]
+          , [119149..119170]
+          , [119173..119179]
+          , [119210..119213]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [120782..120831]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsJavaIdentifierStart.hs b/src/Language/Java/Character/IsJavaIdentifierStart.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsJavaIdentifierStart.hs
@@ -0,0 +1,404 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isJavaIdentifierStart%28int%29>
+module Language.Java.Character.IsJavaIdentifierStart
+(
+  IsJavaIdentifierStart(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isJavaIdentifierStart@.
+class Enum c => IsJavaIdentifierStart c where
+  isJavaIdentifierStart ::
+    c
+    -> Bool
+  isNotJavaIdentifierStart ::
+    c
+    -> Bool
+  isNotJavaIdentifierStart =
+    not . isJavaIdentifierStart
+
+instance IsJavaIdentifierStart Char where
+  isJavaIdentifierStart c =
+    ord c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Int where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Integer where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Word8 where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Word16 where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Word32 where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance IsJavaIdentifierStart Word64 where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+instance HasResolution a => IsJavaIdentifierStart (Fixed a) where
+  isJavaIdentifierStart c =
+    c `S.member` isJavaIdentifierStartSet
+
+isJavaIdentifierStartSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isJavaIdentifierStartSet =
+  let r = [
+            [36]
+          , [65..90]
+          , [95]
+          , [97..122]
+          , [162..165]
+          , [170]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1488..1514]
+          , [1520..1522]
+          , [1569..1594]
+          , [1600..1610]
+          , [1646..1647]
+          , [1649..1747]
+          , [1749]
+          , [1765..1766]
+          , [1774..1775]
+          , [1786..1788]
+          , [1791]
+          , [1808]
+          , [1810..1839]
+          , [1869..1871]
+          , [1920..1957]
+          , [1969]
+          , [2308..2361]
+          , [2365]
+          , [2384]
+          , [2392..2401]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2493]
+          , [2524..2525]
+          , [2527..2529]
+          , [2544..2547]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2649..2652]
+          , [2654]
+          , [2674..2676]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2749]
+          , [2768]
+          , [2784..2785]
+          , [2801]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2877]
+          , [2908..2909]
+          , [2911..2913]
+          , [2929]
+          , [2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3065]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3168..3169]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3261]
+          , [3294]
+          , [3296..3297]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3424..3425]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3585..3632]
+          , [3634..3635]
+          , [3647..3654]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3760]
+          , [3762..3763]
+          , [3773]
+          , [3776..3780]
+          , [3782]
+          , [3804..3805]
+          , [3840]
+          , [3904..3911]
+          , [3913..3946]
+          , [3976..3979]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4176..4181]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5870..5872]
+          , [5888..5900]
+          , [5902..5905]
+          , [5920..5937]
+          , [5952..5969]
+          , [5984..5996]
+          , [5998..6000]
+          , [6016..6067]
+          , [6103]
+          , [6107..6108]
+          , [6176..6263]
+          , [6272..6312]
+          , [6400..6428]
+          , [6480..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8255..8256]
+          , [8276]
+          , [8305]
+          , [8319]
+          , [8352..8369]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [8544..8579]
+          , [12293..12295]
+          , [12321..12329]
+          , [12337..12341]
+          , [12344..12348]
+          , [12353..12438]
+          , [12445..12447]
+          , [12449..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285]
+          , [64287..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65020]
+          , [65075..65076]
+          , [65101..65103]
+          , [65129]
+          , [65136..65140]
+          , [65142..65276]
+          , [65284]
+          , [65313..65338]
+          , [65343]
+          , [65345..65370]
+          , [65381..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65504..65505]
+          , [65509..65510]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66378]
+          , [66432..66461]
+          , [66560..66717]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsLetter.hs b/src/Language/Java/Character/IsLetter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsLetter.hs
@@ -0,0 +1,387 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isLetter%28int%29>
+module Language.Java.Character.IsLetter
+(
+  IsLetter(..)
+) where
+
+import Data.Char hiding (isLetter)
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isLetter@.
+class Enum c => IsLetter c where
+  isLetter ::
+    c
+    -> Bool
+  isNotLetter ::
+    c
+    -> Bool
+  isNotLetter =
+    not . isLetter
+
+instance IsLetter Char where
+  isLetter c =
+    ord c `S.member` isLetterSet
+
+instance IsLetter Int where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance IsLetter Integer where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance IsLetter Word8 where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance IsLetter Word16 where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance IsLetter Word32 where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance IsLetter Word64 where
+  isLetter c =
+    c `S.member` isLetterSet
+
+instance HasResolution a => IsLetter (Fixed a) where
+  isLetter c =
+    c `S.member` isLetterSet
+
+isLetterSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isLetterSet =
+  let r = [
+            [65..90]
+          , [97..122]
+          , [170]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1488..1514]
+          , [1520..1522]
+          , [1569..1594]
+          , [1600..1610]
+          , [1646..1647]
+          , [1649..1747]
+          , [1749]
+          , [1765..1766]
+          , [1774..1775]
+          , [1786..1788]
+          , [1791]
+          , [1808]
+          , [1810..1839]
+          , [1869..1871]
+          , [1920..1957]
+          , [1969]
+          , [2308..2361]
+          , [2365]
+          , [2384]
+          , [2392..2401]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2493]
+          , [2524..2525]
+          , [2527..2529]
+          , [2544..2545]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2649..2652]
+          , [2654]
+          , [2674..2676]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2749]
+          , [2768]
+          , [2784..2785]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2877]
+          , [2908..2909]
+          , [2911..2913]
+          , [2929]
+          , [2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3168..3169]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3261]
+          , [3294]
+          , [3296..3297]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3424..3425]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3585..3632]
+          , [3634..3635]
+          , [3648..3654]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3760]
+          , [3762..3763]
+          , [3773]
+          , [3776..3780]
+          , [3782]
+          , [3804..3805]
+          , [3840]
+          , [3904..3911]
+          , [3913..3946]
+          , [3976..3979]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4176..4181]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5888..5900]
+          , [5902..5905]
+          , [5920..5937]
+          , [5952..5969]
+          , [5984..5996]
+          , [5998..6000]
+          , [6016..6067]
+          , [6103]
+          , [6108]
+          , [6176..6263]
+          , [6272..6312]
+          , [6400..6428]
+          , [6480..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8305]
+          , [8319]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [12293..12294]
+          , [12337..12341]
+          , [12347..12348]
+          , [12353..12438]
+          , [12445..12447]
+          , [12449..12538]
+          , [12540..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285]
+          , [64287..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65019]
+          , [65136..65140]
+          , [65142..65276]
+          , [65313..65338]
+          , [65345..65370]
+          , [65382..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66377]
+          , [66432..66461]
+          , [66560..66717]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsLetterOrDigit.hs b/src/Language/Java/Character/IsLetterOrDigit.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsLetterOrDigit.hs
@@ -0,0 +1,406 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isLetterOrDigit%28int%29>
+module Language.Java.Character.IsLetterOrDigit
+(
+  IsLetterOrDigit(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isLetterOrDigit@.
+class Enum c => IsLetterOrDigit c where
+  isLetterOrDigit ::
+    c
+    -> Bool
+  isNotLetterOrDigit ::
+    c
+    -> Bool
+  isNotLetterOrDigit =
+    not . isLetterOrDigit
+
+instance IsLetterOrDigit Char where
+  isLetterOrDigit c =
+    ord c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Int where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Integer where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Word8 where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Word16 where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Word32 where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance IsLetterOrDigit Word64 where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+instance HasResolution a => IsLetterOrDigit (Fixed a) where
+  isLetterOrDigit c =
+    c `S.member` isLetterOrDigitSet
+
+isLetterOrDigitSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isLetterOrDigitSet =
+  let r = [
+            [48..57]
+          , [65..90]
+          , [97..122]
+          , [170]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1488..1514]
+          , [1520..1522]
+          , [1569..1594]
+          , [1600..1610]
+          , [1632..1641]
+          , [1646..1647]
+          , [1649..1747]
+          , [1749]
+          , [1765..1766]
+          , [1774..1788]
+          , [1791]
+          , [1808]
+          , [1810..1839]
+          , [1869..1871]
+          , [1920..1957]
+          , [1969]
+          , [2308..2361]
+          , [2365]
+          , [2384]
+          , [2392..2401]
+          , [2406..2415]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2493]
+          , [2524..2525]
+          , [2527..2529]
+          , [2534..2545]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2649..2652]
+          , [2654]
+          , [2662..2671]
+          , [2674..2676]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2749]
+          , [2768]
+          , [2784..2785]
+          , [2790..2799]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2877]
+          , [2908..2909]
+          , [2911..2913]
+          , [2918..2927]
+          , [2929]
+          , [2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3047..3055]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3168..3169]
+          , [3174..3183]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3261]
+          , [3294]
+          , [3296..3297]
+          , [3302..3311]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3424..3425]
+          , [3430..3439]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3585..3632]
+          , [3634..3635]
+          , [3648..3654]
+          , [3664..3673]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3760]
+          , [3762..3763]
+          , [3773]
+          , [3776..3780]
+          , [3782]
+          , [3792..3801]
+          , [3804..3805]
+          , [3840]
+          , [3872..3881]
+          , [3904..3911]
+          , [3913..3946]
+          , [3976..3979]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4160..4169]
+          , [4176..4181]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [4969..4977]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5888..5900]
+          , [5902..5905]
+          , [5920..5937]
+          , [5952..5969]
+          , [5984..5996]
+          , [5998..6000]
+          , [6016..6067]
+          , [6103]
+          , [6108]
+          , [6112..6121]
+          , [6160..6169]
+          , [6176..6263]
+          , [6272..6312]
+          , [6400..6428]
+          , [6470..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8305]
+          , [8319]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [12293..12294]
+          , [12337..12341]
+          , [12347..12348]
+          , [12353..12438]
+          , [12445..12447]
+          , [12449..12538]
+          , [12540..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285]
+          , [64287..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65019]
+          , [65136..65140]
+          , [65142..65276]
+          , [65296..65305]
+          , [65313..65338]
+          , [65345..65370]
+          , [65382..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66377]
+          , [66432..66461]
+          , [66560..66717]
+          , [66720..66729]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [120782..120831]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsLowerCase.hs b/src/Language/Java/Character/IsLowerCase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsLowerCase.hs
@@ -0,0 +1,486 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#IsLowerCase%28int%29>
+module Language.Java.Character.IsLowerCase
+(
+  IsLowerCase(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @IsLowerCase@.
+class Enum c => IsLowerCase c where
+  isLowerCase ::
+    c
+    -> Bool
+  isNotLowerCase ::
+    c
+    -> Bool
+  isNotLowerCase =
+    not . isLowerCase
+
+instance IsLowerCase Char where
+  isLowerCase c =
+    ord c `S.member` isLowerCaseSet
+
+instance IsLowerCase Int where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance IsLowerCase Integer where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance IsLowerCase Word8 where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance IsLowerCase Word16 where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance IsLowerCase Word32 where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance IsLowerCase Word64 where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+instance HasResolution a => IsLowerCase (Fixed a) where
+  isLowerCase c =
+    c `S.member` isLowerCaseSet
+
+isLowerCaseSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isLowerCaseSet =
+  let r = [
+            [97..122]
+          , [170]
+          , [181]
+          , [186]
+          , [223..246]
+          , [248..255]
+          , [257]
+          , [259]
+          , [261]
+          , [263]
+          , [265]
+          , [267]
+          , [269]
+          , [271]
+          , [273]
+          , [275]
+          , [277]
+          , [279]
+          , [281]
+          , [283]
+          , [285]
+          , [287]
+          , [289]
+          , [291]
+          , [293]
+          , [295]
+          , [297]
+          , [299]
+          , [301]
+          , [303]
+          , [305]
+          , [307]
+          , [309]
+          , [311..312]
+          , [314]
+          , [316]
+          , [318]
+          , [320]
+          , [322]
+          , [324]
+          , [326]
+          , [328..329]
+          , [331]
+          , [333]
+          , [335]
+          , [337]
+          , [339]
+          , [341]
+          , [343]
+          , [345]
+          , [347]
+          , [349]
+          , [351]
+          , [353]
+          , [355]
+          , [357]
+          , [359]
+          , [361]
+          , [363]
+          , [365]
+          , [367]
+          , [369]
+          , [371]
+          , [373]
+          , [375]
+          , [378]
+          , [380]
+          , [382..384]
+          , [387]
+          , [389]
+          , [392]
+          , [396..397]
+          , [402]
+          , [405]
+          , [409..411]
+          , [414]
+          , [417]
+          , [419]
+          , [421]
+          , [424]
+          , [426..427]
+          , [429]
+          , [432]
+          , [436]
+          , [438]
+          , [441..442]
+          , [445..447]
+          , [454]
+          , [457]
+          , [460]
+          , [462]
+          , [464]
+          , [466]
+          , [468]
+          , [470]
+          , [472]
+          , [474]
+          , [476..477]
+          , [479]
+          , [481]
+          , [483]
+          , [485]
+          , [487]
+          , [489]
+          , [491]
+          , [493]
+          , [495..496]
+          , [499]
+          , [501]
+          , [505]
+          , [507]
+          , [509]
+          , [511]
+          , [513]
+          , [515]
+          , [517]
+          , [519]
+          , [521]
+          , [523]
+          , [525]
+          , [527]
+          , [529]
+          , [531]
+          , [533]
+          , [535]
+          , [537]
+          , [539]
+          , [541]
+          , [543]
+          , [545]
+          , [547]
+          , [549]
+          , [551]
+          , [553]
+          , [555]
+          , [557]
+          , [559]
+          , [561]
+          , [563..566]
+          , [592..687]
+          , [912]
+          , [940..974]
+          , [976..977]
+          , [981..983]
+          , [985]
+          , [987]
+          , [989]
+          , [991]
+          , [993]
+          , [995]
+          , [997]
+          , [999]
+          , [1001]
+          , [1003]
+          , [1005]
+          , [1007..1011]
+          , [1013]
+          , [1016]
+          , [1019]
+          , [1072..1119]
+          , [1121]
+          , [1123]
+          , [1125]
+          , [1127]
+          , [1129]
+          , [1131]
+          , [1133]
+          , [1135]
+          , [1137]
+          , [1139]
+          , [1141]
+          , [1143]
+          , [1145]
+          , [1147]
+          , [1149]
+          , [1151]
+          , [1153]
+          , [1163]
+          , [1165]
+          , [1167]
+          , [1169]
+          , [1171]
+          , [1173]
+          , [1175]
+          , [1177]
+          , [1179]
+          , [1181]
+          , [1183]
+          , [1185]
+          , [1187]
+          , [1189]
+          , [1191]
+          , [1193]
+          , [1195]
+          , [1197]
+          , [1199]
+          , [1201]
+          , [1203]
+          , [1205]
+          , [1207]
+          , [1209]
+          , [1211]
+          , [1213]
+          , [1215]
+          , [1218]
+          , [1220]
+          , [1222]
+          , [1224]
+          , [1226]
+          , [1228]
+          , [1230]
+          , [1233]
+          , [1235]
+          , [1237]
+          , [1239]
+          , [1241]
+          , [1243]
+          , [1245]
+          , [1247]
+          , [1249]
+          , [1251]
+          , [1253]
+          , [1255]
+          , [1257]
+          , [1259]
+          , [1261]
+          , [1263]
+          , [1265]
+          , [1267]
+          , [1269]
+          , [1273]
+          , [1281]
+          , [1283]
+          , [1285]
+          , [1287]
+          , [1289]
+          , [1291]
+          , [1293]
+          , [1295]
+          , [1377..1415]
+          , [7424..7467]
+          , [7522..7531]
+          , [7681]
+          , [7683]
+          , [7685]
+          , [7687]
+          , [7689]
+          , [7691]
+          , [7693]
+          , [7695]
+          , [7697]
+          , [7699]
+          , [7701]
+          , [7703]
+          , [7705]
+          , [7707]
+          , [7709]
+          , [7711]
+          , [7713]
+          , [7715]
+          , [7717]
+          , [7719]
+          , [7721]
+          , [7723]
+          , [7725]
+          , [7727]
+          , [7729]
+          , [7731]
+          , [7733]
+          , [7735]
+          , [7737]
+          , [7739]
+          , [7741]
+          , [7743]
+          , [7745]
+          , [7747]
+          , [7749]
+          , [7751]
+          , [7753]
+          , [7755]
+          , [7757]
+          , [7759]
+          , [7761]
+          , [7763]
+          , [7765]
+          , [7767]
+          , [7769]
+          , [7771]
+          , [7773]
+          , [7775]
+          , [7777]
+          , [7779]
+          , [7781]
+          , [7783]
+          , [7785]
+          , [7787]
+          , [7789]
+          , [7791]
+          , [7793]
+          , [7795]
+          , [7797]
+          , [7799]
+          , [7801]
+          , [7803]
+          , [7805]
+          , [7807]
+          , [7809]
+          , [7811]
+          , [7813]
+          , [7815]
+          , [7817]
+          , [7819]
+          , [7821]
+          , [7823]
+          , [7825]
+          , [7827]
+          , [7829..7835]
+          , [7841]
+          , [7843]
+          , [7845]
+          , [7847]
+          , [7849]
+          , [7851]
+          , [7853]
+          , [7855]
+          , [7857]
+          , [7859]
+          , [7861]
+          , [7863]
+          , [7865]
+          , [7867]
+          , [7869]
+          , [7871]
+          , [7873]
+          , [7875]
+          , [7877]
+          , [7879]
+          , [7881]
+          , [7883]
+          , [7885]
+          , [7887]
+          , [7889]
+          , [7891]
+          , [7893]
+          , [7895]
+          , [7897]
+          , [7899]
+          , [7901]
+          , [7903]
+          , [7905]
+          , [7907]
+          , [7909]
+          , [7911]
+          , [7913]
+          , [7915]
+          , [7917]
+          , [7919]
+          , [7921]
+          , [7923]
+          , [7925]
+          , [7927]
+          , [7929]
+          , [7936..7943]
+          , [7952..7957]
+          , [7968..7975]
+          , [7984..7991]
+          , [8000..8005]
+          , [8016..8023]
+          , [8032..8039]
+          , [8048..8061]
+          , [8064..8071]
+          , [8080..8087]
+          , [8096..8103]
+          , [8112..8116]
+          , [8118..8119]
+          , [8126]
+          , [8130..8132]
+          , [8134..8135]
+          , [8144..8147]
+          , [8150..8151]
+          , [8160..8167]
+          , [8178..8180]
+          , [8182..8183]
+          , [8305]
+          , [8319]
+          , [8458]
+          , [8462..8463]
+          , [8467]
+          , [8495]
+          , [8500]
+          , [8505]
+          , [8509]
+          , [8518..8521]
+          , [64256..64262]
+          , [64275..64279]
+          , [65345..65370]
+          , [66600..66639]
+          , [119834..119859]
+          , [119886..119892]
+          , [119894..119911]
+          , [119938..119963]
+          , [119990..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120015]
+          , [120042..120067]
+          , [120094..120119]
+          , [120146..120171]
+          , [120198..120223]
+          , [120250..120275]
+          , [120302..120327]
+          , [120354..120379]
+          , [120406..120431]
+          , [120458..120483]
+          , [120514..120538]
+          , [120540..120545]
+          , [120572..120596]
+          , [120598..120603]
+          , [120630..120654]
+          , [120656..120661]
+          , [120688..120712]
+          , [120714..120719]
+          , [120746..120770]
+          , [120772..120777]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsMirrored.hs b/src/Language/Java/Character/IsMirrored.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsMirrored.hs
@@ -0,0 +1,155 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isMirrored%28int%29>
+module Language.Java.Character.IsMirrored
+(
+  IsMirrored(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isMirrored@.
+class Enum c => IsMirrored c where
+  isMirrored ::
+    c
+    -> Bool
+  isNotMirrored ::
+    c
+    -> Bool
+  isNotMirrored =
+    not . isMirrored
+
+instance IsMirrored Char where
+  isMirrored c =
+    ord c `S.member` isMirroredSet
+
+instance IsMirrored Int where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance IsMirrored Integer where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance IsMirrored Word8 where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance IsMirrored Word16 where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance IsMirrored Word32 where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance IsMirrored Word64 where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+instance HasResolution a => IsMirrored (Fixed a) where
+  isMirrored c =
+    c `S.member` isMirroredSet
+
+isMirroredSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isMirroredSet =
+  let r = [
+            [40..41]
+          , [60]
+          , [62]
+          , [91]
+          , [93]
+          , [123]
+          , [125]
+          , [171]
+          , [187]
+          , [8249..8250]
+          , [8261..8262]
+          , [8317..8318]
+          , [8333..8334]
+          , [8512]
+          , [8705..8708]
+          , [8712..8717]
+          , [8721]
+          , [8725..8726]
+          , [8730..8733]
+          , [8735..8738]
+          , [8740]
+          , [8742]
+          , [8747..8755]
+          , [8761]
+          , [8763..8780]
+          , [8786..8789]
+          , [8799..8800]
+          , [8802]
+          , [8804..8811]
+          , [8814..8844]
+          , [8847..8850]
+          , [8856]
+          , [8866..8867]
+          , [8870..8888]
+          , [8894..8895]
+          , [8905..8909]
+          , [8912..8913]
+          , [8918..8941]
+          , [8944..8959]
+          , [8968..8971]
+          , [8992..8993]
+          , [9001..9002]
+          , [10088..10101]
+          , [10195..10198]
+          , [10204..10206]
+          , [10210..10219]
+          , [10627..10648]
+          , [10651..10671]
+          , [10680]
+          , [10688..10693]
+          , [10697]
+          , [10702..10706]
+          , [10708..10709]
+          , [10712..10716]
+          , [10721]
+          , [10723..10725]
+          , [10728..10729]
+          , [10740..10745]
+          , [10748..10749]
+          , [10762..10780]
+          , [10782..10785]
+          , [10788]
+          , [10790]
+          , [10793]
+          , [10795..10798]
+          , [10804..10805]
+          , [10812..10814]
+          , [10839..10840]
+          , [10852..10853]
+          , [10858..10861]
+          , [10863..10864]
+          , [10867..10868]
+          , [10873..10915]
+          , [10918..10925]
+          , [10927..10966]
+          , [10972]
+          , [10974]
+          , [10978..10982]
+          , [10988..10990]
+          , [10995]
+          , [10999..11003]
+          , [11005]
+          , [12296..12305]
+          , [12308..12315]
+          , [65288..65289]
+          , [65308]
+          , [65310]
+          , [65339]
+          , [65341]
+          , [65371]
+          , [65373]
+          , [65375..65376]
+          , [65378..65379]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsSpaceChar.hs b/src/Language/Java/Character/IsSpaceChar.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsSpaceChar.hs
@@ -0,0 +1,71 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isSpaceChar%28int%29>
+module Language.Java.Character.IsSpaceChar
+(
+  IsSpaceChar(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isSpaceChar@.
+class Enum c => IsSpaceChar c where
+  isSpaceChar ::
+    c
+    -> Bool
+  isNotSpaceChar ::
+    c
+    -> Bool
+  isNotSpaceChar =
+    not . isSpaceChar
+
+instance IsSpaceChar Char where
+  isSpaceChar c =
+    ord c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Int where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Integer where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Word8 where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Word16 where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Word32 where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance IsSpaceChar Word64 where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+instance HasResolution a => IsSpaceChar (Fixed a) where
+  isSpaceChar c =
+    c `S.member` isSpaceCharSet
+
+isSpaceCharSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isSpaceCharSet =
+  let r = [
+            [32]
+          , [160]
+          , [5760]
+          , [6158]
+          , [8192..8203]
+          , [8232..8233]
+          , [8239]
+          , [8287]
+          , [12288]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsSupplementaryCodePoint.hs b/src/Language/Java/Character/IsSupplementaryCodePoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsSupplementaryCodePoint.hs
@@ -0,0 +1,404 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isSupplementaryCodePoint%28int%29>
+module Language.Java.Character.IsSupplementaryCodePoint
+(
+  IsSupplementaryCodePoint(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isSupplementaryCodePoint@.
+class Enum c => IsSupplementaryCodePoint c where
+  isSupplementaryCodePoint ::
+    c
+    -> Bool
+  isNotSupplementaryCodePoint ::
+    c
+    -> Bool
+  isNotSupplementaryCodePoint =
+    not . isSupplementaryCodePoint
+
+instance IsSupplementaryCodePoint Char where
+  isSupplementaryCodePoint c =
+    ord c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Int where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Integer where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Word8 where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Word16 where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Word32 where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance IsSupplementaryCodePoint Word64 where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+instance HasResolution a => IsSupplementaryCodePoint (Fixed a) where
+  isSupplementaryCodePoint c =
+    c `S.member` isSupplementaryCodePointSet
+
+isSupplementaryCodePointSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isSupplementaryCodePointSet =
+  let r = [
+            [36]
+          , [65..90]
+          , [95]
+          , [97..122]
+          , [162..165]
+          , [170]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1488..1514]
+          , [1520..1522]
+          , [1569..1594]
+          , [1600..1610]
+          , [1646..1647]
+          , [1649..1747]
+          , [1749]
+          , [1765..1766]
+          , [1774..1775]
+          , [1786..1788]
+          , [1791]
+          , [1808]
+          , [1810..1839]
+          , [1869..1871]
+          , [1920..1957]
+          , [1969]
+          , [2308..2361]
+          , [2365]
+          , [2384]
+          , [2392..2401]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2493]
+          , [2524..2525]
+          , [2527..2529]
+          , [2544..2547]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2649..2652]
+          , [2654]
+          , [2674..2676]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2749]
+          , [2768]
+          , [2784..2785]
+          , [2801]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2877]
+          , [2908..2909]
+          , [2911..2913]
+          , [2929]
+          , [2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3065]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3168..3169]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3261]
+          , [3294]
+          , [3296..3297]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3424..3425]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3585..3632]
+          , [3634..3635]
+          , [3647..3654]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3760]
+          , [3762..3763]
+          , [3773]
+          , [3776..3780]
+          , [3782]
+          , [3804..3805]
+          , [3840]
+          , [3904..3911]
+          , [3913..3946]
+          , [3976..3979]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4176..4181]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5870..5872]
+          , [5888..5900]
+          , [5902..5905]
+          , [5920..5937]
+          , [5952..5969]
+          , [5984..5996]
+          , [5998..6000]
+          , [6016..6067]
+          , [6103]
+          , [6107..6108]
+          , [6176..6263]
+          , [6272..6312]
+          , [6400..6428]
+          , [6480..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8255..8256]
+          , [8276]
+          , [8305]
+          , [8319]
+          , [8352..8369]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [8544..8579]
+          , [12293..12295]
+          , [12321..12329]
+          , [12337..12341]
+          , [12344..12348]
+          , [12353..12438]
+          , [12445..12447]
+          , [12449..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285]
+          , [64287..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65020]
+          , [65075..65076]
+          , [65101..65103]
+          , [65129]
+          , [65136..65140]
+          , [65142..65276]
+          , [65284]
+          , [65313..65338]
+          , [65343]
+          , [65345..65370]
+          , [65381..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65504..65505]
+          , [65509..65510]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66378]
+          , [66432..66461]
+          , [66560..66717]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsTitleCase.hs b/src/Language/Java/Character/IsTitleCase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsTitleCase.hs
@@ -0,0 +1,72 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isTitleCase%28int%29>
+module Language.Java.Character.IsTitleCase
+(
+  IsTitleCase(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isTitleCase@.
+class Enum c => IsTitleCase c where
+  isTitleCase ::
+    c
+    -> Bool
+  isNotTitleCase ::
+    c
+    -> Bool
+  isNotTitleCase =
+    not . isTitleCase
+
+instance IsTitleCase Char where
+  isTitleCase c =
+    ord c `S.member` isTitleCaseSet
+
+instance IsTitleCase Int where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance IsTitleCase Integer where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance IsTitleCase Word8 where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance IsTitleCase Word16 where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance IsTitleCase Word32 where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance IsTitleCase Word64 where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+instance HasResolution a => IsTitleCase (Fixed a) where
+  isTitleCase c =
+    c `S.member` isTitleCaseSet
+
+isTitleCaseSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isTitleCaseSet =
+  let r = [
+            [453]
+          , [456]
+          , [459]
+          , [498]
+          , [8072..8079]
+          , [8088..8095]
+          , [8104..8111]
+          , [8124]
+          , [8140]
+          , [8188]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsUnicodeIdentifierPart.hs b/src/Language/Java/Character/IsUnicodeIdentifierPart.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsUnicodeIdentifierPart.hs
@@ -0,0 +1,493 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isUnicodeIdentifierPart%28int%29>
+module Language.Java.Character.IsUnicodeIdentifierPart
+(
+  IsUnicodeIdentifierPart(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isUnicodeIdentifierPart@.
+class Enum c => IsUnicodeIdentifierPart c where
+  isUnicodeIdentifierPart ::
+    c
+    -> Bool
+  isNotUnicodeIdentifierPart ::
+    c
+    -> Bool
+  isNotUnicodeIdentifierPart =
+    not . isUnicodeIdentifierPart
+
+instance IsUnicodeIdentifierPart Char where
+  isUnicodeIdentifierPart c =
+    ord c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Int where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Integer where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Word8 where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Word16 where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Word32 where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance IsUnicodeIdentifierPart Word64 where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+instance HasResolution a => IsUnicodeIdentifierPart (Fixed a) where
+  isUnicodeIdentifierPart c =
+    c `S.member` isUnicodeIdentifierPartSet
+
+isUnicodeIdentifierPartSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isUnicodeIdentifierPartSet =
+  let r = [
+            [0..8]
+          , [14..27]
+          , [48..57]
+          , [65..90]
+          , [95]
+          , [97..122]
+          , [127..159]
+          , [170]
+          , [173]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [768..855]
+          , [861..879]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1155..1158]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1425..1441]
+          , [1443..1465]
+          , [1467..1469]
+          , [1471]
+          , [1473..1474]
+          , [1476]
+          , [1488..1514]
+          , [1520..1522]
+          , [1536..1539]
+          , [1552..1557]
+          , [1569..1594]
+          , [1600..1624]
+          , [1632..1641]
+          , [1646..1747]
+          , [1749..1757]
+          , [1759..1768]
+          , [1770..1788]
+          , [1791]
+          , [1807..1866]
+          , [1869..1871]
+          , [1920..1969]
+          , [2305..2361]
+          , [2364..2381]
+          , [2384..2388]
+          , [2392..2403]
+          , [2406..2415]
+          , [2433..2435]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2492..2500]
+          , [2503..2504]
+          , [2507..2509]
+          , [2519]
+          , [2524..2525]
+          , [2527..2531]
+          , [2534..2545]
+          , [2561..2563]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2620]
+          , [2622..2626]
+          , [2631..2632]
+          , [2635..2637]
+          , [2649..2652]
+          , [2654]
+          , [2662..2676]
+          , [2689..2691]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2748..2757]
+          , [2759..2761]
+          , [2763..2765]
+          , [2768]
+          , [2784..2787]
+          , [2790..2799]
+          , [2817..2819]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2876..2883]
+          , [2887..2888]
+          , [2891..2893]
+          , [2902..2903]
+          , [2908..2909]
+          , [2911..2913]
+          , [2918..2927]
+          , [2929]
+          , [2946..2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3006..3010]
+          , [3014..3016]
+          , [3018..3021]
+          , [3031]
+          , [3047..3055]
+          , [3073..3075]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3134..3140]
+          , [3142..3144]
+          , [3146..3149]
+          , [3157..3158]
+          , [3168..3169]
+          , [3174..3183]
+          , [3202..3203]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3260..3268]
+          , [3270..3272]
+          , [3274..3277]
+          , [3285..3286]
+          , [3294]
+          , [3296..3297]
+          , [3302..3311]
+          , [3330..3331]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3390..3395]
+          , [3398..3400]
+          , [3402..3405]
+          , [3415]
+          , [3424..3425]
+          , [3430..3439]
+          , [3458..3459]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3530]
+          , [3535..3540]
+          , [3542]
+          , [3544..3551]
+          , [3570..3571]
+          , [3585..3642]
+          , [3648..3662]
+          , [3664..3673]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3769]
+          , [3771..3773]
+          , [3776..3780]
+          , [3782]
+          , [3784..3789]
+          , [3792..3801]
+          , [3804..3805]
+          , [3840]
+          , [3864..3865]
+          , [3872..3881]
+          , [3893]
+          , [3895]
+          , [3897]
+          , [3902..3911]
+          , [3913..3946]
+          , [3953..3972]
+          , [3974..3979]
+          , [3984..3991]
+          , [3993..4028]
+          , [4038]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4140..4146]
+          , [4150..4153]
+          , [4160..4169]
+          , [4176..4185]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [4969..4977]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5870..5872]
+          , [5888..5900]
+          , [5902..5908]
+          , [5920..5940]
+          , [5952..5971]
+          , [5984..5996]
+          , [5998..6000]
+          , [6002..6003]
+          , [6016..6099]
+          , [6103]
+          , [6108..6109]
+          , [6112..6121]
+          , [6155..6157]
+          , [6160..6169]
+          , [6176..6263]
+          , [6272..6313]
+          , [6400..6428]
+          , [6432..6443]
+          , [6448..6459]
+          , [6470..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8204..8207]
+          , [8234..8238]
+          , [8255..8256]
+          , [8276]
+          , [8288..8291]
+          , [8298..8303]
+          , [8305]
+          , [8319]
+          , [8400..8412]
+          , [8417]
+          , [8421..8426]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [8544..8579]
+          , [12293..12295]
+          , [12321..12335]
+          , [12337..12341]
+          , [12344..12348]
+          , [12353..12438]
+          , [12441..12442]
+          , [12445..12447]
+          , [12449..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65019]
+          , [65024..65039]
+          , [65056..65059]
+          , [65075..65076]
+          , [65101..65103]
+          , [65136..65140]
+          , [65142..65276]
+          , [65279]
+          , [65296..65305]
+          , [65313..65338]
+          , [65343]
+          , [65345..65370]
+          , [65381..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65529..65531]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66378]
+          , [66432..66461]
+          , [66560..66717]
+          , [66720..66729]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119141..119145]
+          , [119149..119170]
+          , [119173..119179]
+          , [119210..119213]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [120782..120831]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsUnicodeIdentifierStart.hs b/src/Language/Java/Character/IsUnicodeIdentifierStart.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsUnicodeIdentifierStart.hs
@@ -0,0 +1,390 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isUnicodeIdentifierStart%28int%29>
+module Language.Java.Character.IsUnicodeIdentifierStart
+(
+  IsUnicodeIdentifierStart(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isUnicodeIdentifierStart@.
+class Enum c => IsUnicodeIdentifierStart c where
+  isUnicodeIdentifierStart ::
+    c
+    -> Bool
+  isNotUnicodeIdentifierStart ::
+    c
+    -> Bool
+  isNotUnicodeIdentifierStart =
+    not . isUnicodeIdentifierStart
+
+instance IsUnicodeIdentifierStart Char where
+  isUnicodeIdentifierStart c =
+    ord c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Int where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Integer where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Word8 where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Word16 where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Word32 where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance IsUnicodeIdentifierStart Word64 where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+instance HasResolution a => IsUnicodeIdentifierStart (Fixed a) where
+  isUnicodeIdentifierStart c =
+    c `S.member` isUnicodeIdentifierStartSet
+
+isUnicodeIdentifierStartSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isUnicodeIdentifierStartSet =
+  let r = [
+            [65..90]
+          , [97..122]
+          , [170]
+          , [181]
+          , [186]
+          , [192..214]
+          , [216..246]
+          , [248..566]
+          , [592..705]
+          , [710..721]
+          , [736..740]
+          , [750]
+          , [890]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..929]
+          , [931..974]
+          , [976..1013]
+          , [1015..1019]
+          , [1024..1153]
+          , [1162..1230]
+          , [1232..1269]
+          , [1272..1273]
+          , [1280..1295]
+          , [1329..1366]
+          , [1369]
+          , [1377..1415]
+          , [1488..1514]
+          , [1520..1522]
+          , [1569..1594]
+          , [1600..1610]
+          , [1646..1647]
+          , [1649..1747]
+          , [1749]
+          , [1765..1766]
+          , [1774..1775]
+          , [1786..1788]
+          , [1791]
+          , [1808]
+          , [1810..1839]
+          , [1869..1871]
+          , [1920..1957]
+          , [1969]
+          , [2308..2361]
+          , [2365]
+          , [2384]
+          , [2392..2401]
+          , [2437..2444]
+          , [2447..2448]
+          , [2451..2472]
+          , [2474..2480]
+          , [2482]
+          , [2486..2489]
+          , [2493]
+          , [2524..2525]
+          , [2527..2529]
+          , [2544..2545]
+          , [2565..2570]
+          , [2575..2576]
+          , [2579..2600]
+          , [2602..2608]
+          , [2610..2611]
+          , [2613..2614]
+          , [2616..2617]
+          , [2649..2652]
+          , [2654]
+          , [2674..2676]
+          , [2693..2701]
+          , [2703..2705]
+          , [2707..2728]
+          , [2730..2736]
+          , [2738..2739]
+          , [2741..2745]
+          , [2749]
+          , [2768]
+          , [2784..2785]
+          , [2821..2828]
+          , [2831..2832]
+          , [2835..2856]
+          , [2858..2864]
+          , [2866..2867]
+          , [2869..2873]
+          , [2877]
+          , [2908..2909]
+          , [2911..2913]
+          , [2929]
+          , [2947]
+          , [2949..2954]
+          , [2958..2960]
+          , [2962..2965]
+          , [2969..2970]
+          , [2972]
+          , [2974..2975]
+          , [2979..2980]
+          , [2984..2986]
+          , [2990..2997]
+          , [2999..3001]
+          , [3077..3084]
+          , [3086..3088]
+          , [3090..3112]
+          , [3114..3123]
+          , [3125..3129]
+          , [3168..3169]
+          , [3205..3212]
+          , [3214..3216]
+          , [3218..3240]
+          , [3242..3251]
+          , [3253..3257]
+          , [3261]
+          , [3294]
+          , [3296..3297]
+          , [3333..3340]
+          , [3342..3344]
+          , [3346..3368]
+          , [3370..3385]
+          , [3424..3425]
+          , [3461..3478]
+          , [3482..3505]
+          , [3507..3515]
+          , [3517]
+          , [3520..3526]
+          , [3585..3632]
+          , [3634..3635]
+          , [3648..3654]
+          , [3713..3714]
+          , [3716]
+          , [3719..3720]
+          , [3722]
+          , [3725]
+          , [3732..3735]
+          , [3737..3743]
+          , [3745..3747]
+          , [3749]
+          , [3751]
+          , [3754..3755]
+          , [3757..3760]
+          , [3762..3763]
+          , [3773]
+          , [3776..3780]
+          , [3782]
+          , [3804..3805]
+          , [3840]
+          , [3904..3911]
+          , [3913..3946]
+          , [3976..3979]
+          , [4096..4129]
+          , [4131..4135]
+          , [4137..4138]
+          , [4176..4181]
+          , [4256..4293]
+          , [4304..4344]
+          , [4352..4441]
+          , [4447..4514]
+          , [4520..4601]
+          , [4608..4614]
+          , [4616..4678]
+          , [4680]
+          , [4682..4685]
+          , [4688..4694]
+          , [4696]
+          , [4698..4701]
+          , [4704..4742]
+          , [4744]
+          , [4746..4749]
+          , [4752..4782]
+          , [4784]
+          , [4786..4789]
+          , [4792..4798]
+          , [4800]
+          , [4802..4805]
+          , [4808..4814]
+          , [4816..4822]
+          , [4824..4846]
+          , [4848..4878]
+          , [4880]
+          , [4882..4885]
+          , [4888..4894]
+          , [4896..4934]
+          , [4936..4954]
+          , [5024..5108]
+          , [5121..5740]
+          , [5743..5750]
+          , [5761..5786]
+          , [5792..5866]
+          , [5870..5872]
+          , [5888..5900]
+          , [5902..5905]
+          , [5920..5937]
+          , [5952..5969]
+          , [5984..5996]
+          , [5998..6000]
+          , [6016..6067]
+          , [6103]
+          , [6108]
+          , [6176..6263]
+          , [6272..6312]
+          , [6400..6428]
+          , [6480..6509]
+          , [6512..6516]
+          , [7424..7531]
+          , [7680..7835]
+          , [7840..7929]
+          , [7936..7957]
+          , [7960..7965]
+          , [7968..8005]
+          , [8008..8013]
+          , [8016..8023]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031..8061]
+          , [8064..8116]
+          , [8118..8124]
+          , [8126]
+          , [8130..8132]
+          , [8134..8140]
+          , [8144..8147]
+          , [8150..8155]
+          , [8160..8172]
+          , [8178..8180]
+          , [8182..8188]
+          , [8305]
+          , [8319]
+          , [8450]
+          , [8455]
+          , [8458..8467]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8495..8497]
+          , [8499..8505]
+          , [8509..8511]
+          , [8517..8521]
+          , [8544..8579]
+          , [12293..12295]
+          , [12321..12329]
+          , [12337..12341]
+          , [12344..12348]
+          , [12353..12438]
+          , [12445..12447]
+          , [12449..12538]
+          , [12540..12543]
+          , [12549..12588]
+          , [12593..12686]
+          , [12704..12727]
+          , [12784..12799]
+          , [13312..19893]
+          , [19968..40869]
+          , [40960..42124]
+          , [44032..55203]
+          , [63744..64045]
+          , [64048..64106]
+          , [64256..64262]
+          , [64275..64279]
+          , [64285]
+          , [64287..64296]
+          , [64298..64310]
+          , [64312..64316]
+          , [64318]
+          , [64320..64321]
+          , [64323..64324]
+          , [64326..64433]
+          , [64467..64829]
+          , [64848..64911]
+          , [64914..64967]
+          , [65008..65019]
+          , [65136..65140]
+          , [65142..65276]
+          , [65313..65338]
+          , [65345..65370]
+          , [65382..65470]
+          , [65474..65479]
+          , [65482..65487]
+          , [65490..65495]
+          , [65498..65500]
+          , [65536..65547]
+          , [65549..65574]
+          , [65576..65594]
+          , [65596..65597]
+          , [65599..65613]
+          , [65616..65629]
+          , [65664..65786]
+          , [66304..66334]
+          , [66352..66378]
+          , [66432..66461]
+          , [66560..66717]
+          , [67584..67589]
+          , [67592]
+          , [67594..67637]
+          , [67639..67640]
+          , [67644]
+          , [67647]
+          , [119808..119892]
+          , [119894..119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119993]
+          , [119995]
+          , [119997..120003]
+          , [120005..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120094..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120146..120483]
+          , [120488..120512]
+          , [120514..120538]
+          , [120540..120570]
+          , [120572..120596]
+          , [120598..120628]
+          , [120630..120654]
+          , [120656..120686]
+          , [120688..120712]
+          , [120714..120744]
+          , [120746..120770]
+          , [120772..120777]
+          , [131072..173782]
+          , [194560..195101]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsUpperCase.hs b/src/Language/Java/Character/IsUpperCase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsUpperCase.hs
@@ -0,0 +1,483 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isUpperCase%28int%29>
+module Language.Java.Character.IsUpperCase
+(
+  IsUpperCase(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isUpperCase@.
+class Enum c => IsUpperCase c where
+  isUpperCase ::
+    c
+    -> Bool
+  isNotUpperCase ::
+    c
+    -> Bool
+  isNotUpperCase =
+    not . isUpperCase
+
+instance IsUpperCase Char where
+  isUpperCase c =
+    ord c `S.member` isUpperCaseSet
+
+instance IsUpperCase Int where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance IsUpperCase Integer where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance IsUpperCase Word8 where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance IsUpperCase Word16 where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance IsUpperCase Word32 where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance IsUpperCase Word64 where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+instance HasResolution a => IsUpperCase (Fixed a) where
+  isUpperCase c =
+    c `S.member` isUpperCaseSet
+
+isUpperCaseSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isUpperCaseSet =
+  let r = [
+            [65..90]
+          , [192..214]
+          , [216..222]
+          , [256]
+          , [258]
+          , [260]
+          , [262]
+          , [264]
+          , [266]
+          , [268]
+          , [270]
+          , [272]
+          , [274]
+          , [276]
+          , [278]
+          , [280]
+          , [282]
+          , [284]
+          , [286]
+          , [288]
+          , [290]
+          , [292]
+          , [294]
+          , [296]
+          , [298]
+          , [300]
+          , [302]
+          , [304]
+          , [306]
+          , [308]
+          , [310]
+          , [313]
+          , [315]
+          , [317]
+          , [319]
+          , [321]
+          , [323]
+          , [325]
+          , [327]
+          , [330]
+          , [332]
+          , [334]
+          , [336]
+          , [338]
+          , [340]
+          , [342]
+          , [344]
+          , [346]
+          , [348]
+          , [350]
+          , [352]
+          , [354]
+          , [356]
+          , [358]
+          , [360]
+          , [362]
+          , [364]
+          , [366]
+          , [368]
+          , [370]
+          , [372]
+          , [374]
+          , [376..377]
+          , [379]
+          , [381]
+          , [385..386]
+          , [388]
+          , [390..391]
+          , [393..395]
+          , [398..401]
+          , [403..404]
+          , [406..408]
+          , [412..413]
+          , [415..416]
+          , [418]
+          , [420]
+          , [422..423]
+          , [425]
+          , [428]
+          , [430..431]
+          , [433..435]
+          , [437]
+          , [439..440]
+          , [444]
+          , [452]
+          , [455]
+          , [458]
+          , [461]
+          , [463]
+          , [465]
+          , [467]
+          , [469]
+          , [471]
+          , [473]
+          , [475]
+          , [478]
+          , [480]
+          , [482]
+          , [484]
+          , [486]
+          , [488]
+          , [490]
+          , [492]
+          , [494]
+          , [497]
+          , [500]
+          , [502..504]
+          , [506]
+          , [508]
+          , [510]
+          , [512]
+          , [514]
+          , [516]
+          , [518]
+          , [520]
+          , [522]
+          , [524]
+          , [526]
+          , [528]
+          , [530]
+          , [532]
+          , [534]
+          , [536]
+          , [538]
+          , [540]
+          , [542]
+          , [544]
+          , [546]
+          , [548]
+          , [550]
+          , [552]
+          , [554]
+          , [556]
+          , [558]
+          , [560]
+          , [562]
+          , [902]
+          , [904..906]
+          , [908]
+          , [910..911]
+          , [913..929]
+          , [931..939]
+          , [978..980]
+          , [984]
+          , [986]
+          , [988]
+          , [990]
+          , [992]
+          , [994]
+          , [996]
+          , [998]
+          , [1000]
+          , [1002]
+          , [1004]
+          , [1006]
+          , [1012]
+          , [1015]
+          , [1017..1018]
+          , [1024..1071]
+          , [1120]
+          , [1122]
+          , [1124]
+          , [1126]
+          , [1128]
+          , [1130]
+          , [1132]
+          , [1134]
+          , [1136]
+          , [1138]
+          , [1140]
+          , [1142]
+          , [1144]
+          , [1146]
+          , [1148]
+          , [1150]
+          , [1152]
+          , [1162]
+          , [1164]
+          , [1166]
+          , [1168]
+          , [1170]
+          , [1172]
+          , [1174]
+          , [1176]
+          , [1178]
+          , [1180]
+          , [1182]
+          , [1184]
+          , [1186]
+          , [1188]
+          , [1190]
+          , [1192]
+          , [1194]
+          , [1196]
+          , [1198]
+          , [1200]
+          , [1202]
+          , [1204]
+          , [1206]
+          , [1208]
+          , [1210]
+          , [1212]
+          , [1214]
+          , [1216..1217]
+          , [1219]
+          , [1221]
+          , [1223]
+          , [1225]
+          , [1227]
+          , [1229]
+          , [1232]
+          , [1234]
+          , [1236]
+          , [1238]
+          , [1240]
+          , [1242]
+          , [1244]
+          , [1246]
+          , [1248]
+          , [1250]
+          , [1252]
+          , [1254]
+          , [1256]
+          , [1258]
+          , [1260]
+          , [1262]
+          , [1264]
+          , [1266]
+          , [1268]
+          , [1272]
+          , [1280]
+          , [1282]
+          , [1284]
+          , [1286]
+          , [1288]
+          , [1290]
+          , [1292]
+          , [1294]
+          , [1329..1366]
+          , [4256..4293]
+          , [7680]
+          , [7682]
+          , [7684]
+          , [7686]
+          , [7688]
+          , [7690]
+          , [7692]
+          , [7694]
+          , [7696]
+          , [7698]
+          , [7700]
+          , [7702]
+          , [7704]
+          , [7706]
+          , [7708]
+          , [7710]
+          , [7712]
+          , [7714]
+          , [7716]
+          , [7718]
+          , [7720]
+          , [7722]
+          , [7724]
+          , [7726]
+          , [7728]
+          , [7730]
+          , [7732]
+          , [7734]
+          , [7736]
+          , [7738]
+          , [7740]
+          , [7742]
+          , [7744]
+          , [7746]
+          , [7748]
+          , [7750]
+          , [7752]
+          , [7754]
+          , [7756]
+          , [7758]
+          , [7760]
+          , [7762]
+          , [7764]
+          , [7766]
+          , [7768]
+          , [7770]
+          , [7772]
+          , [7774]
+          , [7776]
+          , [7778]
+          , [7780]
+          , [7782]
+          , [7784]
+          , [7786]
+          , [7788]
+          , [7790]
+          , [7792]
+          , [7794]
+          , [7796]
+          , [7798]
+          , [7800]
+          , [7802]
+          , [7804]
+          , [7806]
+          , [7808]
+          , [7810]
+          , [7812]
+          , [7814]
+          , [7816]
+          , [7818]
+          , [7820]
+          , [7822]
+          , [7824]
+          , [7826]
+          , [7828]
+          , [7840]
+          , [7842]
+          , [7844]
+          , [7846]
+          , [7848]
+          , [7850]
+          , [7852]
+          , [7854]
+          , [7856]
+          , [7858]
+          , [7860]
+          , [7862]
+          , [7864]
+          , [7866]
+          , [7868]
+          , [7870]
+          , [7872]
+          , [7874]
+          , [7876]
+          , [7878]
+          , [7880]
+          , [7882]
+          , [7884]
+          , [7886]
+          , [7888]
+          , [7890]
+          , [7892]
+          , [7894]
+          , [7896]
+          , [7898]
+          , [7900]
+          , [7902]
+          , [7904]
+          , [7906]
+          , [7908]
+          , [7910]
+          , [7912]
+          , [7914]
+          , [7916]
+          , [7918]
+          , [7920]
+          , [7922]
+          , [7924]
+          , [7926]
+          , [7928]
+          , [7944..7951]
+          , [7960..7965]
+          , [7976..7983]
+          , [7992..7999]
+          , [8008..8013]
+          , [8025]
+          , [8027]
+          , [8029]
+          , [8031]
+          , [8040..8047]
+          , [8120..8123]
+          , [8136..8139]
+          , [8152..8155]
+          , [8168..8172]
+          , [8184..8187]
+          , [8450]
+          , [8455]
+          , [8459..8461]
+          , [8464..8466]
+          , [8469]
+          , [8473..8477]
+          , [8484]
+          , [8486]
+          , [8488]
+          , [8490..8493]
+          , [8496..8497]
+          , [8499]
+          , [8510..8511]
+          , [8517]
+          , [65313..65338]
+          , [66560..66599]
+          , [119808..119833]
+          , [119860..119885]
+          , [119912..119937]
+          , [119964]
+          , [119966..119967]
+          , [119970]
+          , [119973..119974]
+          , [119977..119980]
+          , [119982..119989]
+          , [120016..120041]
+          , [120068..120069]
+          , [120071..120074]
+          , [120077..120084]
+          , [120086..120092]
+          , [120120..120121]
+          , [120123..120126]
+          , [120128..120132]
+          , [120134]
+          , [120138..120144]
+          , [120172..120197]
+          , [120224..120249]
+          , [120276..120301]
+          , [120328..120353]
+          , [120380..120405]
+          , [120432..120457]
+          , [120488..120512]
+          , [120546..120570]
+          , [120604..120628]
+          , [120662..120686]
+          , [120720..120744]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsValidCodePoint.hs b/src/Language/Java/Character/IsValidCodePoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsValidCodePoint.hs
@@ -0,0 +1,63 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isValidCodePoint%28int%29>
+module Language.Java.Character.IsValidCodePoint
+(
+  IsValidCodePoint(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isValidCodePoint@.
+class Enum c => IsValidCodePoint c where
+  isValidCodePoint ::
+    c
+    -> Bool
+  isNotValidCodePoint ::
+    c
+    -> Bool
+  isNotValidCodePoint =
+    not . isValidCodePoint
+
+instance IsValidCodePoint Char where
+  isValidCodePoint c =
+    ord c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Int where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Integer where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Word8 where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Word16 where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Word32 where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance IsValidCodePoint Word64 where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+instance HasResolution a => IsValidCodePoint (Fixed a) where
+  isValidCodePoint c =
+    c `S.member` isValidCodePointSet
+
+isValidCodePointSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isValidCodePointSet =
+  let r = [
+            [0..1114111]
+          ]
+  in S.fromList . concat $ r
diff --git a/src/Language/Java/Character/IsWhitespace.hs b/src/Language/Java/Character/IsWhitespace.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Java/Character/IsWhitespace.hs
@@ -0,0 +1,71 @@
+-- | Simulates the @isDefined@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isWhitespace%28int%29>
+module Language.Java.Character.IsWhitespace
+(
+  IsWhitespace(..)
+) where
+
+import Data.Char
+import Data.Fixed
+import Data.Word
+import Data.Set(Set)
+import qualified Data.Set as S
+
+-- | Instances simulate Java characters and provide a decision on simulating @isWhitespace@.
+class Enum c => IsWhitespace c where
+  isWhitespace ::
+    c
+    -> Bool
+  isNotWhitespace ::
+    c
+    -> Bool
+  isNotWhitespace =
+    not . isWhitespace
+
+instance IsWhitespace Char where
+  isWhitespace c =
+    ord c `S.member` isWhitespaceSet
+
+instance IsWhitespace Int where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance IsWhitespace Integer where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance IsWhitespace Word8 where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance IsWhitespace Word16 where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance IsWhitespace Word32 where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance IsWhitespace Word64 where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+instance HasResolution a => IsWhitespace (Fixed a) where
+  isWhitespace c =
+    c `S.member` isWhitespaceSet
+
+isWhitespaceSet ::
+  (Num a, Enum a, Ord a) =>
+  Set a
+isWhitespaceSet =
+  let r = [
+            [9..13]
+          , [28..32]
+          , [5760]
+          , [6158]
+          , [8192..8198]
+          , [8200..8203]
+          , [8232..8233]
+          , [8287]
+          , [12288]
+          ]
+  in S.fromList . concat $ r
