void _BoneField(string boneName, ref FullBodyIK.Bone bone, bool isOptional)
        {
            FullBodyIK.SafeNew(ref bone);
            var fbik = this.target as FullBodyIKBehaviourBase;

            EditorGUILayout.BeginHorizontal();
            if (bone.transform == null)
            {
                if (isOptional)
                {
                    GUILayout.Label(boneName + " *", _guiStyle_boneName_Unselected_Optional, GUILayout.Width(boneNameFieldSize));
                }
                else
                {
                    GUILayout.Label(boneName, _guiStyle_boneName_Unselected, GUILayout.Width(boneNameFieldSize));
                }
            }
            else
            {
                GUILayout.Label(boneName, GUILayout.Width(boneNameFieldSize));
            }
            EditorUtil.GUI.PushEnabled(!Application.isPlaying);
            EditorUtil.GUI.TransformField(fbik, "", ref bone.transform, true);
            EditorUtil.GUI.PopEnabled();
            EditorGUILayout.EndHorizontal();
        }
        void _FingerBoneField(string boneName, ref FullBodyIK.Bone[] bones, bool isOptional)
        {
            if (bones == null || bones.Length != 4)
            {
                bones = new FullBodyIK.Bone[4];
            }

            for (int i = 0; i < bones.Length; ++i)
            {
                string name = null;
                if (i + 1 == bones.Length)
                {
                    name = boneName + " Tip";
                }
                else
                {
                    name = boneName + " " + (i + 1).ToString();
                }
                _BoneField(name, ref bones[i], isOptional);
            }
        }
		void _FingerBoneField( string boneName, ref FullBodyIK.Bone[] bones, bool isOptional )
		{
			if( bones == null || bones.Length != 4 ) {
				bones = new FullBodyIK.Bone[4];
			}

			for( int i = 0; i < bones.Length; ++i ) {
				string name = null;
				if( i + 1 == bones.Length ) {
					name = boneName + " Tip";
				} else {
					name = boneName + " " + (i + 1).ToString();
				}
				_BoneField( name, ref bones[i], isOptional );
			}
		}