anchor.diff:  
   ;;----------------------------------------------------------------------
   
  -;; [TODO] ensure all cast lists have the correct order.
  -
  -;; spec types are to handle the manifest ugliness of the glsl spec.
  -;; dear god just one txt file with every permutation of every glsl
  -;; function would have save me so many hours work.
  -(def-v-type-class v-tfd (v-spec-type) ())
  -(def-v-type-class v-tf (v-tfd) ()) ;; float vec*
  -(def-v-type-class v-td (v-tfd) ()) ;; double dvec*
  -(def-v-type-class v-tb (v-spec-type) ()) ;; bool bvec*
  -(def-v-type-class v-tiu (v-spec-type) ())
  -(def-v-type-class v-i-ui (v-spec-type) ()) ;; int uint
  -(def-v-type-class v-ti (v-tiu) ()) ;; int ivec*
  -(def-v-type-class v-tu (v-tiu) ()) ;; uint uvec*
  -(def-v-type-class v-tvec (v-spec-type) ()) ;;vec* uvec* ivec* [notice no dvec]
  -(def-v-type-class v-gvec4 (v-spec-type) ()) ;;vec4 uvec4 ivec4
  -
  -(def-v-type-class v-gsampler-1d (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d (v-spec-type) ())
  -(def-v-type-class v-gsampler-3d (v-spec-type) ())
  -(def-v-type-class v-gsampler-cube (v-spec-type) ())
  -(def-v-type-class v-gsampler-rect (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-rect (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-ms (v-spec-type) ())
  -(def-v-type-class v-gsampler-buffer (v-spec-type) ())
  -
  -(def-v-type-class v-gsampler-1d-array (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-array (v-spec-type) ())
  -(def-v-type-class v-gsampler-1d-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-1d-array-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-array-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-cube-array (v-spec-type) ())
  -(def-v-type-class v-gsampler-2d-ms-array (v-spec-type) ())
  -(def-v-type-class v-gsampler-rect-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-cube-shadow (v-spec-type) ())
  -(def-v-type-class v-gsampler-cube-array-shadow (v-spec-type) ())
  -(def-v-type-class v-gimage-1d (v-spec-type) nil)
  -(def-v-type-class v-gimage-2d (v-spec-type) nil)
  -(def-v-type-class v-gimage-3d (v-spec-type) nil)
  -(def-v-type-class v-gimage-rect (v-spec-type) nil)
  -(def-v-type-class v-gimage-cube (v-spec-type) nil)
  -(def-v-type-class v-gimage-2d-ms (v-spec-type) nil)
  -(def-v-type-class v-gimage-buffer (v-spec-type) nil)
  -(def-v-type-class v-gimage-2d-rect (v-spec-type) nil)
  -(def-v-type-class v-gimage-1d-array (v-spec-type) nil)
  -(def-v-type-class v-gimage-2d-array (v-spec-type) nil)
  -(def-v-type-class v-gimage-cube-array (v-spec-type) nil)
  -(def-v-type-class v-gimage-2d-ms-array (v-spec-type) nil)
  -
  -
  -
   (def-v-type-class v-void (v-t-type)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "void" :reader v-glsl-string)))
   
  -(def-v-type-class v-bool (v-type v-tb)
  +(def-v-type-class v-bool (v-type)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "bool" :reader v-glsl-string)))
   
   (def-v-type-class v-number (v-type) ())
  -(def-v-type-class v-int (v-number v-ti v-i-ui)
  +(def-v-type-class v-int (v-number)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "int" :reader v-glsl-string)
      (casts-to :initform '(v-uint v-float v-double))))
  -(def-v-type-class v-uint (v-number v-tu v-i-ui)
  +(def-v-type-class v-uint (v-number)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "uint" :reader v-glsl-string)
      (casts-to :initform '(v-float v-double))))
  -(def-v-type-class v-float (v-number v-tf)
  +(def-v-type-class v-float (v-number)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "float" :reader v-glsl-string)
      (casts-to :initform '(v-double))))
  
positive.code:   ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler2DMSArray" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-2d-rect (v-sampler v-gsampler-2d-rect)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler2DRect" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-3d (v-sampler v-gsampler-3d)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler3D" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-buffer (v-sampler v-gsampler-buffer)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usamplerBuffer" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-cube (v-sampler v-gsampler-cube)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usamplerCube" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-cube-array (v-sampler v-gsampler-cube-array)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usamplerCubeArray" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-sampler-rect (v-sampler v-gsampler-rect)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerRect" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-isampler-rect (v-sampler v-gsampler-rect)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isamplerRect" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-rect (v-sampler v-gsampler-rect)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usamplerRect" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  
negative.code:    (casts-to :initform '(v-uvec4 v-vec4 v-dvec4))))
  
  (def-v-type-class v-dvector (v-vector) ())
  (def-v-type-class v-dvec2 (v-dvector)
    ((core :initform t :reader core-typep)
     (glsl-string :initform "dvec2" :reader v-glsl-string)
     (element-type :initform 'v-double)
  