You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: biharmonic_bounded.m
    path of file: ./repos/gptoolbox/mesh
    
    the code of the file until where you have to start completion: function W = biharmonic_bounded(V,F,b,bc,varargin)
  % BIHARMONIC_BOUNDED Compute biharmonic bounded coordinates, using quadratic
  % optimizer
  %
  % W = biharmonic_bounded(V,F,b,bc)
  % W = biharmonic_bounded(V,F,b,bc,'ParameterName',ParameterValue)
  %
  % Inputs:
  %  V  list of vertex positions
  %  F  list of face indices, for 3D F is #F by 4, for 2D F is #F by 3
  %  b  list of boundary vertices
  %  bc list of boundary conditions, size(boundary) by # handles matrix of
  %    boundary con
    
function to use assignin to this workspace
      feval(@()assignin('caller',params_to_variables(param_name),varargin{v}));
    else
      error('Unsupported parameter: %s',varargin{v});
    end
    v=v+1;
  end

  assert(k <= 2 || strcmp(opt_type,'quad'), ...
    'For large k, OptType should be quad.');

  % Build discrete laplacian and mass matrices used by all handles' solves
  L = cotmatrix(V,F);
  M = massmatrix(V,F);
  % NORMALIZE MASSMATRIX (THIS IS IMPORTANT!!)
  M = M./max(abs(diag(M)));

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % SET UP SOLVER
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  if any(R(:)) && ~strcmp(opt_type,'quad')
    error( [ ...
      'Enforcing shape preserving regions only supported in' ...
      ' conjunction with opt_type=''quad''']);
  end